目录
1.1.目的
我们所说的大数据就是数据量的庞大,数据的种类繁杂多样化,数据的飞快的变化,数据的真假存疑,Hadoop正好可以处理这方面的数据。
1.2.术语与缩写解释
缩写、术语 解 释
HDFS Hadoop分布式文件系统(Hadoop Distributed File System ),分布式文件系统,提供了高吞吐量的数据访问。
MapReduce 基于YARN的大数据集的并行处理系统。
YARN Hadoop集群资源管理框架(Yet Another Resource Negotiator),用于作业调度和集群资源管理。
HBase 可扩展的分布式列式数据库,支持大表的结构化存储。
ZooKeeper 提供Hadoop集群高性能的分布式的协调服务。
Kerberos 一种计算机网络授权协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证。
1.3.参考资料
2.1.运行环境
推荐使用64位Centos7.4操作系统,开启超线程,关闭swap。
超线程需要CPU支持,在bios中设置。
关闭swap命令:swap off,永久关闭需要在/etc/fstab注释掉swap那一行。
2.2.硬件配置
类型 cpu 内存 硬盘 IP
虚拟机 1 core 8G 100G 192.168.170.100
虚拟机 1 core 8G 100G 192.168.170.101
虚拟机 1 core 8G 100G 192.168.170.102
2.3.硬件安排
2.4.配置架构图
2.5.平台组件介质
序号 软件名称 安装包名称== (包我就不分享了 你们可以自行换包 换版本 ) ==
1 Ambari ambari-2.5.0.3-centos7.tar.gz
2 HDP HDP-2.5.3.0-centos7-rpm.tar.gz
3 HDP-UTILS HDP-UTILS-1.1.0.21-centos7.tar.gz
4 JDK jdk-8u91-linux-x64.tar.gz
2.6.第三方依赖包
序号 软件名称 操作命令
1 snappy-devel-1.1.0-3.el7.x86_64.rpm、libtirpc-devel-0.2.4-0.10.el7.x86_64.rpm(ambari2.5需要安装libtirpc-devel) rpm -ivh 包名
3.1.部署说明
主要部署的组件包括HDFS、MapReduce、YARN、HBase、ZooKeeper
3.2.部署要点
不准使用lvm逻辑卷管理,系统盘单独挂载,/tmp,/home,/var等目录不单独挂载空间;每块硬盘挂载到单独目录下(/data1,/data2,…/datan),文件系统采用xfs
3.3.环境配置
3.3.1.主机免密登陆配置
root 用户 默认路径下执行如下命令:
ssh-keygen -t rsa -P ‘’ # 生成秘钥文件 (提示后直接回车)
设置权限
chmod 700 .ssh
cd .ssh
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 authorized_keys
authorized_keys文件拷贝到各个主机
scp /root/.ssh/authorized_keys xxx.xxx.xx.xxx:/root/.ssh/.(如果没有该目录,则需要手动创建)
各主机执行命令:hostnamectl --static set-hostname 主机名(无需重启,注销重新登陆即可生效)
scp authorized_keys [email protected]:/root/.ssh/.
注:主机名需要按照集团规范命令
3.3.2.HOSTS配置
所有主机/etc/hosts均需要添加
3.3.3.关闭防火墙
所有主机执行命令:
192.168.220.130 hadoop1.dcs.com hadoop1
192.168.220.131 hadoop2.dcs.com hadoop2
192.168.220.132 hadoop3.dcs.com hadoop3
systemctl disable NetworkManager
systemctl stop NetworkManager
systemctl disable firewalld
systemctl stop firewalld
3.3.4.NTP时钟源配置
如已有NTP时钟源可忽略此步骤
挑选一台主机安装ntp服务:rpm -ivh ntp-4.2.6p5-22.el7.centos.x86_64.rpm
vi /etc/ntp.conf
追加内容如下
restrict 0.0.0.0 mask 0.0.0.0 nomodify notrap noquery
restrict 172.16.0.0 mask 255.255.0.0 nomodify
restrict 127.0.0.1
server 127.127.1.0
fudge 127.127.1.0 stratum 8
driftfile /var/lib/ntp/drift
keys /etc/ntp/keys
statsdir /var/log/ntp/
logfile /var/log/ntp/ntp.log
启动并设置开机启动:
systemctl enable ntpd.service
systemctl start ntpd.service
3.3.5.时间同步配置
定时同步:所有节点全执行
ntpdate 192.168.220.130 echo “server 192.168.220.130 iburst” >>/etc/chrony.conf
systemctl restart chronyd
systemctl enable chronyd
timedatectl
3.3.6.关闭selinux
所有主机执行
vi /etc/selinux/config
设置
SELINUX=disabled
3.3.7.关闭THP特性
所有主机执行
vi /etc/rc.local
追加以下内容
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
执行 source /etc/rc.local 生效
3.3.8.ulimit配置
所有主机均需要配置
新增配置文件:
vi /etc/security/limits.d/hbase.nofiles.conf
以下内容加入到该文件中
hbase - nofile 327680
设定所有用户的ulimit:
vi /etc/security/limits.conf
以下内容添加到该文件中
* - nofile 65536
* - nproc 16384
vi /etc/security/limits.d/20-nproc.conf
以下内容添加到该文件中
* soft nproc 16384
root soft nproc unlimited
如果不能生效的话
vi /etc/profile
ulimit -n 65535
ulimit -u 16384
执行 source /etc/profile 生效
基础环境配置完成后重启主机
3.3.9.yum源配置
安装http服务:
rpm -ivh httpd-2.4.6-40.el7.centos.x86_64.rpm
systemctl start httpd
systemctl enable httpd
解压ambari-2.5.0.3-centos7.tar.gz、HDP-2.5.3.0-centos7-rpm.tar.gz、HDP-UTILS-1.1.0.21-centos7.tar.gz、CentOS系统包到/var/www/html下
/var/www/html新建一个centos7目录
CentOS 需要挂载到目录下
新增配置文件:
vi /etc/yum.repos.d/ambari.repo
[HDP]
name=HDP
baseurl=http://172.16.1.1/HDP-2.5.3.0-37/centos7
gpgcheck=1
gpgkey=http://172.16.1.1/HDP-2.5.3.0-37/centos7/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1
[HDP-UTILS]
name=HDP-UTILS
baseurl=http://172.16.1.1/HDP-UTILS-1.1.0.21
gpgcheck=1
gpgkey=http://172.16.1.1/HDP-UTILS-1.1.0.21/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1
[Ambari]
name=Ambari
baseurl=http://172.16.1.1/AMBARI-2.5.0.3/centos7/2.4.2.0-136
gpgcheck=1
gpgkey=http://172.16.1.1/AMBARI-2.5.0.3/centos7/2.4.2.0-136/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1
yum clean all
yum makecache
如果只读到CentOS 源,vi ~/.bash_profile 注释alias yum=‘yum --disablerepo=* --enablerepo=c6-media’
然后拷贝配置文件到各个服务器
scp /etc/yum.repos.d/ambari.repo hadoop2:/etc/yum.repos.d/
3.4.JDK部署
3.4.1.JDK安装介质说明
建议使用1.8以上版本
3.4.2.JDK配置文件说明
需添加环境变量设置到/etc/profile
3.4.3.JDK部署步骤
将jdk-8u91-linux-x64.tar.gz上传到各个主机
然后解压:tar -zxvf jdk-8u91-linux-x64.tar.gz -C /opt
vi /etc/profile
添加以下内容到该文件中
/opt/jdk1.8.0_162
export JAVA_HOME=/opt/jdk1.8.0_91
export PATH=$JAVA_HOME/bin:$PATH
添加权限
chmod -R 755 /opt/jdk1.8.0_91
执行 source /etc/profile生效
各主机执行java -version、echo $JAVA_HOME 验证JDK版本及安装路径
3.5.Kerberos部署
3.5.1.服务端、客户端安装
服务端命令(主备机都要装):
yum -y install krb5-server krb5-libs krb5-auth-dialog
客户端命令(所有机器):
yum -y install krb5-workstation krb5-libs krb5-auth-dialog
3.5.2.配置文件修改
主备节点修改配置文件:
vi /etc/krb5.conf
修改为以下内容(域名需要根据集团规范命名)
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = DCS.COM
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 2d 0h 0m 0s
renew_lifetime = 500d
forwardable = true
allow_weak_crypto = true
kdc_timeout = 3000
max_retries = 3
[realms]
DCS.COM = {
kdc = hadoop1.dcs.com
admin_server = hadoop1.dcs.com
default_domain = dcs.com
}
[domain_realm]
.dcs.com = DCS.COM
dcs.com = DCS.COM
[kdc]
profile = /var/kerberos/krb5kdc/kdc.conf
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
验证时如需客户端,可拷贝该配置文件到客户端节点:scp /etc/krb5.conf hadoop3:/etc
主备节点修改配置文件:
vi /var/kerberos/krb5kdc/kdc.conf
修改为以下内容(域名需要根据集团规范命名)
[kdcdefaults]
kdc_ports = 750,88
kdc_tcp_ports = 88
v4_mode = nopreauth
[realms]
DCS.COM = {
master_key_type = des3-hmac-sha1
database_name = /var/kerberos/krb5kdc/principal
key_stash_file = /var/kerberos/krb5kdc/.DCS.COM
acl_file = /var/kerberos/krb5kdc/kadm5.acl
kdc_ports = 750,88
max_life = 2d 0h 0m 0s
max_renewable_life = 500d 0h 0m 0s
dict_file = /usr/share/dict/words
admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
supported_enctypes = des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
}
3.5.3.创建Kerberos数据库
#配置如上2个文件后再在主节点上创建数据库
#备节点不需要建数据库
创建一个kerberos数据库 ,kerberos数据库文件存放在/var/kerberos/krb5kdc/
命令:
kdb5_util create -r DCS.COM -s
执行结果如下:
kdb5_util create -r DCS.COM -s
Loading random data
Initializing database ‘/var/kerberos/krb5kdc/principal’ for realm ‘DCS.COM’,
master key name ‘K/[email protected]’
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Enter KDC database master key: #密码root
Re-enter KDC database master key to verify: #密码root
#输入数据库root密码:root(可自定义) 安装过程中需要输入数据库root用户密码
3.5.4.创建超级管理用户root及kadm5.keytab文件
主节点运行kadmin.local
执行:
kadmin.local:addprinc root/admin
kadmin.local: ktadd -k /var/kerberos/krb5kdc/kadm5.keytab kadmin/admin kadmin/changepw
注:可以用kadd来增加用户的权限
注意:kadm5.keytab的路径要与kdc.conf中的路径一致
验证:
重启服务
systemctl restart krb5kdc.service
systemctl restart kadmin.service
3.5.5.新增配置:kadm5.acl
vi /var/kerberos/krb5kdc/kadm5.acl
更新以下内容到配置文件
*/[email protected] *
重启服务
systemctl restart krb5kdc.service
systemctl restart kadmin.service
3.5.6.主备配置
1、创建主节点host用户以及票据/etc/krb5.keytab
[root@hadoop1 ~]# kadmin
Authenticating as principal root/[email protected] with password.
Password for root/[email protected]:
kadmin: addprinc -randkey host/hadoop1.dcs.com
WARNING: no policy specified for host/[email protected]; defaulting to no policy
Principal “host/[email protected]” created.
kadmin: ktadd host/hadoop1.dcs.com
Entry for principal host/hadoop1.dcs.com with kvno 2, encryption type des3-cbc-sha1 added to keytab FILE:/etc/krb5.keytab.
Entry for principal host/hadoop1.dcs.com with kvno 2, encryption type arcfour-hmac added to keytab FILE:/etc/krb5.keytab.
Entry for principal host/hadoop1.dcs.com with kvno 2, encryption type des-hmac-sha1 added to keytab FILE:/etc/krb5.keytab.
Entry for principal host/hadoop1.dcs.com with kvno 2, encryption type des-cbc-md5 added to keytab FILE:/etc/krb5.keytab.
kadmin: exit
2、创建备节点host用户以及票据/etc/krb5.keytab
[root@hadoop1 ~]# kadmin
Authenticating as principal root/[email protected] with password.
Password for root/[email protected]:
kadmin: addprinc -randkey host/hadoop2.dcs.com
WARNING: no policy specified for host/[email protected]; defaulting to no policy
Principal “host/[email protected]” created.
kadmin: ktadd host/hadoop2.dcs.com
Entry for principal host/hadoop2.dcs.com with kvno 2, encryption type des3-cbc-sha1 added to keytab FILE:/etc/krb5.keytab.
Entry for principal host/hadoop2.dcs.com with kvno 2, encryption type arcfour-hmac added to keytab FILE:/etc/krb5.keytab.
Entry for principal host/hadoop2.dcs.com with kvno 2, encryption type des-hmac-sha1 added to keytab FILE:/etc/krb5.keytab.
Entry for principal host/hadoop2.dcs.com with kvno 2, encryption type des-cbc-md5 added to keytab FILE:/etc/krb5.keytab.
kadmin: exit
3、在备节点上配置以下文件
vi /var/kerberos/krb5kdc/kpropd.acl
host/[email protected]
host/[email protected]
4、主节点拷贝文件到备节点
cd /var/kerberos/krb5kdc/
scp kdc.conf kadm5.acl .DCS.COM hadoop2:/var/kerberos/krb5kdc/
5、主节点/etc/krb5.conf配置文件新增kdc备节点地址
vi /etc/krb5.conf
添加:kdc = hadoop2.dcs.com
拷贝该文件到备节点:scp /etc/krb5.conf hadoop2:/etc/krb5.conf
验证时如需客户端,可拷贝该配置文件到客户端节点:scp /etc/krb5.conf hadoop3:/etc
6、备节点启动kpropd服务
.
7、主节点配置prop.sh
vi /var/kerberos/krb5kdc/prop.sh
加入以下脚本
#!/bin/sh
kdclist='hadoop2.dcs.com'
/usr/sbin/kdb5_util dump /var/kerberos/krb5kdc/slave_datatrans
for kdc in $kdclist
do
/usr/sbin/kprop -f /var/kerberos/krb5kdc/slave_datatrans $kdc
done
设置权限:chmod 700 prop.sh
添加定时任务:crontab -e
0 0 * * * /var/kerberos/krb5kdc/prop.sh
8、脚本执行情况:
9、验证:
查看备节点/var/kerberos/krb5kdc/目录下有没有生成对应的配置文件
主节点停掉krb5kdc服务
systemctl stop krb5kdc.service
备节点启动krb5kdc服务
systemctl start krb5kdc.service
客户端验证安全认证是否异常(登录其他主机验证kinit获取是否异常)。
3.5.7.安装ambari服务端
yum install -y ambari-server(只有ambari服务端节点做)
3.5.8.安装ambari客户端
可以先不安装,后续ambari会自动安装,但是需要配置root免密
yum install -y ambari-agent
3.5.9.ambari-agent配置
vi /etc/ambari-agent/conf/ambari-agent.ini
修改
hostname= hadoop1.dcs.com
配置文件拷贝到各个主机:
scp /etc/ambari-agent/conf/ambari-agent.ini hadoop2:/etc/ambari-agent/conf
3.5.10.ambari-server设置
执行命令:ambari-server setup
3.5.11.ambari-server启动
命令:ambari-server start
重启命令:ambari-server restart
3.5.12.ambari-agent启动
命令: ambari-agent start
重启命令: ambari-agent restart
3.6.hadoop部署
3.6.1.安装前检查
防火墙是否随机启动
systemctl list-unit-files|grep firewalld
Selinux是否永久关闭
cat /etc/selinux/config|grep SELINUX=
ulimit检查
ulimit -a |grep ‘max user processes’
ulimit -a |grep ‘open files’
是否安装成功kerberos客户端
klist -V
是否成功安装jdk
whereis java
默认java版本
java -version
Kerberos客户端配置文件是否正确
cat /etc/krb5.conf|grep dcs.com
主机hostname是否正确
hostname -f
是否有定时时钟同步
crontab -l
时间和时区是否正确
date -R
磁盘挂载是否符合要求
df -h
字符集是否正确
cat /etc/locale.conf
env|grep LANG
3.6.2.Hadoop部署步骤
1、登录界面
通过浏览器打开:http://192.168.170.100:8080
用户密码:admin/admin
2、设置集群名称dcs
Cluster,根据系统用途定义集群名称,包括:省份简写、能力中心简写、组件名称、三位序号。示例:GS_CRM_HDP_001
配置yum源
添加主机信息和ambari-server节点的root的私钥
5、主机确认界面:
ambari的yum源文件名必须是/etc/yum.repos.d/ambari.repo
centos7.4的系统会出现ambari-agent注册不到ambari-server,报错如下:
ERROR 2018-10-10 09:29:47,150 NetUtil.py:93 - [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:579)
ERROR 2018-10-10 09:29:47,151 NetUtil.py:94 - SSLError: Failed to connect. Please check openssl library versions.
解决方法:
修改/etc/python/cert-verification.cfg配置文件: (每个ambari-agent节点都需要修改)
vi /etc/python/cert-verification.cfg
修改为verify=disable
,然后重启ambari-agent,页面点击retry
状态都为SUCCESS才可以通过。(告警信息需要查看处理)
python /usr/lib/python2.6/site-packages/ambari_agent/HostCleanup.py --silent --skip=users
6、选择要安装的组键
包括HDFS、YARN+MapReduce2、Hbase、ZooKeeper、Ambari Metrics等
7、进入配置界面
选择各主机对应安装的组键,根据主机规划选择。
HBase Master主机需新增一台
8、选择各主机安装的服务
9、安装组件相关配置
有提示参数先修改,其他参数可以等整个集群启动后再修改
11、开始安装
100%提示安装成功后 :next
有告警信息的话根据告警处理。
若多次重试失败可能会产生遗留文件,例如:
File “/usr/lib/python2.6/site-packages/resource_management/core/shell.py”, line 303, in _call
raise ExecutionFailed(err_msg, code, out, err)
resource_management.core.exceptions.ExecutionFailed: Execution of 'ambari-sudo.sh /usr/bin/hdp-select set all ambari-python-wrap /usr/bin/hdp-select versions | grep ^2.5 | tail -1
’ returned 1. symlink target /usr/hdp/current/hbase-client for hbase already exists and it is not a symlink.
解决方法:
rm -rf /usr/hdp/current/hbase-client
安装正常完成并成功启动之后,展现的web界面,左边列表全部都是绿色的圆点,如果有红色表示启动异常,需要查找原因。
3.6.3.启用NameNode高可用
1、进入NN HA配置界面
在abmari主界面 HDFS Service Actions Enable NameNode HA
输入集群名称:dcs
2、分配主机角色
选择新增安装的NN主机: hadoop2.dcs.com
选择要安装的三台JournalNode : hadoop1.dcs.com / hadoop2.dcs.com /hadoop3.dcs.com
如下图:
这里就提示 hadoop2.dcs.com SNN 要删除;
hadoop2.dcs.com NN 要新增;
hadoop1.dcs.com JN 要新增
hadoop2.dcs.com JN 要新增
hadoop3.dcs.com JN 要新增
4、在NameNode上进入安全模式并创建检查点
执行完成后 next
6、手动初始化JournalNodes
在hadoop1.dcs.com主机上执行界面中的命令:
sudo su -l hdfs -c ‘hdfs namenode -initializeSharedEdits’
执行完成后 next
7、启动zookeeper和namenode服务
执行完成后 next
8、手动初始化NameNode的HA元数据
在hadoop1.dcs.com主机上执行步骤2的命令:
sudo su hdfs -l -c 'hdfs zkfc -formatZK'
注意:
Important! Be sure to login to the Additional NameNode host.
This is a different host from the Steps 1 and 2 above.
注意要登录到另外的NN主机,和步骤1、2是不一样主机
即:在hadoop2.dcs.com主机上执行步骤4的命令:
sudo su hdfs -l -c ‘hdfs namenode -bootstrapStandby’
此时已经完成了两台NameNode的高可用HA部署,常态下为一台namenode(active)状态,另一台namenode为(standby)状态,当active的namenode出现故障,则两台namenode互换角色,原来standby状态的namenode升级为active状态继续提供服务。当那台出现故障的namenode恢复正常后自动进入standby的热备状态。
3.6.4.启用ResourceManager高可用
进入 yarn -> service actions -> enanble ResourceManager HA
进入到配置界面 next.
进入到配置界面 next 都是默认配置,OK。
3.6.5.启用Kerberos
注意:若ambari-server不在hadoop集群内,需手动在ambari-server节点安装kerberos客户端,否则启用Kerberos无法完成。
1、打开界面
Admin Kerberos Enable Kerberos
这边的密码是上述root/admin新建时配置的密码
下图krb5-conf template中的内容从/etc/krb5.conf复制进去
安装过程如果报错:sudo: no tty present and no askpass program specified
需要在ambari-server主机上添加sudo权限:
vi /etc/sudoers
admin ALL=(ALL)NOPASSWD: ALL
所有服务启动起来就成功了。
5、验证
klist -kt /etc/security/keytabs/nn.service.keytab
5.部署问题(有问题可以问问度娘)
NameNode启动失败
java.net.BindException: Problem binding to [0.0.0.0:50010]
解决方案:
•netstat -anlpt |grep 50010 查询占用50010端口的进程。
•kill -9 xxx,强制关闭进程即可
ambari客户端连接不了服务器
操作系统centos6.5会有openssl的bug,ambari agent连不上服务器
解决方案:
下载安装rpm -ivh --replacefiles openssl-1.0.1e-30.el6.x86_64.rpm
Ambari测试kdc连接败
Algorithm AES256 not enabled
解决方案:
•当前jdk不支持AES256加密算法,需要安装相应的jce
Ambari安装hadoop时报错snappy版本不匹配
Error:Package:snappy-devel-1.0.5-1.el6.x86_64
解决方案:
•rpm -ivh snappy-devel-1.1.0-3.el7.x86_64.rpm
3 十月 2020 16:23:27,873 INFO [pool-19-thread-1] BSHostStatusCollector:55 - Request directory /var/run/ambari-server/bootstrap/1
13 十月 2020 16:23:27,873 INFO [pool-19-thread-1] BSHostStatusCollector:62 - HostList for polling on [hadoop1.dcs.com, hadoop2.dcs.com
bootstrap 创建这个目录,并且给权限
mkdir bootstrap
chmod 755 bootstrap
chown admin. bootstrap/