1 环境
1.1 软件
Centos7.9 //最低7.2版本 兼容 中标麒麟(服务器操作系统V7.0U6)
Ambari 2.7.4 //支持HDP-3.1.5 和 HDF-3.2.0
Mysql 5.7 //只支持mysql5.7或者postgresql10.7/ 10.5/ 10. 2/ 9.6
JDK 1.80_77及以上版本
Chrome 57.0.2 / 56.0.2
https://supportmatrix.hortonworks.com/ (版本兼容查询)
1.2 硬件
推荐最低配置:
1.3 参考文档
https://docs.cloudera.com/HDPDocuments/Ambari-2.7.5.0/bk_ambari-installation/content/ch_Getting_Ready.html (网上历史方式cloudera.com,已经收费)
备选:
https://ambari.apache.org (ambari开源版本)
2 前期准备(各节点均配置)
2.1 关闭防火墙/selinux
1 | systemctl disable firewalld.service && systemctl stop firewalld.service |
1 | setenforce 0 |
2.2 修改网络
设置主机IP地址为静态地址,同时开启网卡自启动。
2.3 系统优化
设置文件最大打开数
1 | vim /etc/security/limits.conf |
重启或重新进入shell窗口
2.4 设置hosts
修改主机名,并将主机名加入各节点hosts文件
2.5 ssh免密登录
SSH免密码登录,因为Hadoop需要通过SSH登录到各个节点进行操作,我用的是root用户,每台服务器都生成公钥,再合并到authorized_keys
(1)CentOS默认没有启动ssh无密登录,去掉/etc/ssh/sshd_config其中2行的注释,每台服务器都要设置,
1 | $ vi /etc/ssh/sshd_config |
(2)输入命令,ssh-keygen -t rsa,生成key,都不输入密码,一直回车,/root就会生成.ssh文件夹,每台服务器都要设置。
1 | ssh-keygen -t rsa |
(3)合并公钥到authorized_keys文件,在Master服务器,进入/root/.ssh目录,通过SSH命令合并
1 | $ cat id_rsa.pub authorized_keys |
(4)把Master服务器的authorized_keys、known_hosts复制到Slave服务器的/root/.ssh目录
1 | $ scp authorized_keys root@192.168.0.165:~/.ssh |
(5)完成,ssh Slave1、ssh Slave2、ssh Slave3就不需要输入密码了
2.6 时间同步(提前下载)
1) master节点作为时间同步服务器,所有节点安装ntp ntpdate
1 | yum install ntp ntpdate |
2) master节点配置
1 | vim /etc/ntp.config |
启动时间同步服务器
1 | systemctl start ntpd #启动时间同步程序 |
3) 在其它节点上运行如下命令同步时间
1 | ntpdate -u 192.168.214.128 |
设置定时任务
1 | 3 * * * * root ntpdate -u 192.168.214.128 # 每三分钟执行一次同步 |
2.7 jdk安装
jdk-8u144-linux-x64.tar.gz 或 jdk-8u152-linux-x64.tar.gz
版本需要高于8u77
配置jdk环境
1 | export JAVA_HOME=/usr/local/java_version |
2.8 mysql安装(ambari节点)
下载mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz
mysql支持5.7版本
1) 下载安装包
http://dev.mysql.com/downloads/mysql/#downloads
推荐下载通用安装方法的tar.gz包
2) 安装过程
1 | shell> groupadd mysql |
默认密码如下
3) 修改my.cnf的内容如下
1 | [mysql] |
4) 初始化密码
1 | mysql> SET PASSWORD = PASSWORD('123456'); |
5) 添加远程访问权限
1 | mysql> use mysql; |
6) 设置开机自启
1 | chkconfig mysql on |
3 设置本地库
3.1 apache安装(ambari节点)
1 | yum install apache //搭建本地仓库 |
3.2 下载并上传软件包
Ambari https://archive.cloudera.com/p/ambari/2.x/2.7.4.14/centos7/ambari-2.7.4.14-1-centos7.tar.gz
HDP https://archive.cloudera.com/p/HDP/3.x/3.1.4.0/centos7/HDP-3.1.4.0-centos7-rpm.tar.gz
HDP-UTILS https://archive.cloudera.com/p/HDP-UTILS/1.1.0.22/repos/centos7/HDP-UTILS-1.1.0.22-centos7.tar.gz
HDP-GPL https://archive.cloudera.com/p/HDP-GPL/3.x/3.1.4.0/centos7/HDP-GPL-3.1.4.0-centos7-gpl.tar.gz
解压缩文件,拷贝到/var/www/html下
3.3 配置源
4 Ambari安装
4.1 创建源文件
ambari.repo
1 | [ambari] |
hdp.repo
1 | [HDP] |
hdp-gpl.repo
1 | [HDP-GPL] |
hdp-utils.repo
1 | [HDP-UTILS] |
4.2 生成缓存
1 | yum clean all |
4.3 安装Ambari Server
1 | yum install ambari-server |
离线版没有postgresql,需要提前使用–downloadonly下载好.
4.3.1 初始化Ambar
备注:mysql连接器提前下载好放到/usr/share/java目录
https://downloads.mysql.com/archives/get/p/3/file/mysql-connector-java-5.1.49.tar.gz
修改jar文件名为mysql-connector-java.jar 放到/usr/share/java目录。
4.3.2 初始化mysql
4.3.2.1 创建ambari数据库
1 | CREATE DATABASE `ambari` CHARACTER SET utf8 COLLATE utf8_general_ci; |
4.3.2.2 初始化数据
1 | mysql -uroot -p123456 ambari < /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql |
4.3.3 启动Ambari server
ambari-server start启动服务。
此时,登录10.10.10.31:8080,即可看到ambari的页面,如下:
默认账号密码:admin admin
5 安装HDP集群
集群名称 zhjx
centos选择rathat7,输入本地私库的url,其他类型删除。
输入节点主机名,下载管理节点的ssh密码,id_rsa 文件,在页面上传密钥
备注,必须安装如下格式,不能使用hadoop2
没有按照上图设置主机名,会出现主机名不合规的提示。
这里经常安装失败,可以查看日志排查。
检查无误,NEXT→通过即可
如果这个步骤失败了错误,记得多看日志,多找问题,如果还不行的话,回档咯
1 | [root@master ~]# # ambari-server stop #停止命令 |
问题1:
centos7.3/4安装ambari2.6以上版本报EOF occurred in violation of protocol (_ssl.c:579)
解决办法:
开始可以少选些服务,减少错误,后面还可以添加。
HDFS、Hive、HBase、Sqoop、ZooKeeper、Flume
节点分配,我这里默认了
设置密码,我这里直接都设置为admin1234
数据库连接都采用root用户,
配置数据库的时候执行下黄色部分的命令
设置各组件的路径,我这里默认
默认了
默认了
默认了
这一步也是经常报错,看日志解决吧。
5.1.1 设置组件自启动
admin>>Service Auto Start 所有组件全部开启
6 问题
6.1 问题1:缺少软件(提前downloadonly)
unzip
nc
psmisc
redhat-lsb
libtirpc-devel
gcc
python-devel
python-kerberos
6.2 问题2:没有flume组件
高版本没有集成组件,需要手动集成,建议采用低版本hdp安装(ambari 2.6.2.2+hdp2.6.5)。
6.3 问题3:重启主机,ambari-server无法启动
日志vim /var/log/ambari-server/ambari-server.out
问题原因:数据库连接失败
网上查找原因:是需要在mysql连接url后面添加 ?useSSL=false,其实不然。
以上问题都是一个原因经尝试,都和ambari-server的配置文件有关系。
配置如下:
无论是使用IP地址,还是配置的主机名,都不可以链接到数据库。配置为localhost恢复正常。
如下:
6.4 问题4:hive组件配置数据库时,需要执行一下mysql连接驱动的路径的命令在master节点
否则数据库连接测试总是失败。
1 | ambari-server setup --jdbc-db=mysql –jdbc-driver=/usr/share/java/mysql-connector-java.jar |
6.5 6.5 问题5:SmartSense Gateway is not active
原因:服务器离线,无法访问域名地址,忽略即可。
7 扩展功能
7.1 配置namenode HA
参考资料:https://blog.csdn.net/qq_21153619/article/details/81974140
1) 在Ambari UI中,选择Services>HDFS>Summary
2) 点击Service Actions,点击Enable NameNode HA
3) 在Get Started页面中,输入一个Nameservice ID然后点Next
备注:设置HA前,需要先关闭HBase服务
调整服务节点
如上图操作:
在nameNode上创建检查点
1、 登录Namenode Host Hadoop3.htsb。
2、 将NameNode放在安全模式(只读模式)
1 | sudo su hdfs -l -c 'hdfs dfsadmin -safemode enter' |
3、 一旦处于安全模式,创建一个检查点
1 | sudo su hdfs -l -c 'hdfs dfsadmin -saveNamespace' |
如上图所示:
初始化journalnode
1、 登录Namenode Host Hadoop3.htsb。
2、 运行初始化journalnode
1 | sudo su hdfs -l -c 'hdfs namenode -initializeSharedEdits' |
3、 一旦Ambari检测到已成功初始化,您将能够继续。
如上图所示:
初始化预期的HA元数据
1、 登录Namenode Host Hadoop3.htsb
2、 通过运行初始化NameNode自动故障转移的元数据
1 | sudo su hdfs -l -c 'hdfs zkfc -formatZK' |
3、 登录新Namenode节点namenode1.htsb
4、 通过运行初始化其他nameNode的元数据
1 | sudo su hdfs -l -c 'hdfs namenode -bootstrapStandby' |
下一步