hadoop集群部署2-离线版

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 硬件

推荐最低配置:
enter description here

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
2
setenforce 0
/etc/selinux/config //永久关闭修改config文件

2.2 修改网络

设置主机IP地址为静态地址,同时开启网卡自启动。

2.3 系统优化

设置文件最大打开数

1
2
3
4
5
6
vim /etc/security/limits.conf
* soft nofile 65535 // 当前系统生效的最大文件打开数
* hard nofile 65535 // 当前系统所能设定的最大值
设置最大进程数
* soft nproc 11000
* hard nproc 11000

重启或重新进入shell窗口
enter description here

2.4 设置hosts

修改主机名,并将主机名加入各节点hosts文件

2.5 ssh免密登录

SSH免密码登录,因为Hadoop需要通过SSH登录到各个节点进行操作,我用的是root用户,每台服务器都生成公钥,再合并到authorized_keys
(1)CentOS默认没有启动ssh无密登录,去掉/etc/ssh/sshd_config其中2行的注释,每台服务器都要设置,

1
2
3
$ vi /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes

(2)输入命令,ssh-keygen -t rsa,生成key,都不输入密码,一直回车,/root就会生成.ssh文件夹,每台服务器都要设置。

1
$ ssh-keygen -t rsa

(3)合并公钥到authorized_keys文件,在Master服务器,进入/root/.ssh目录,通过SSH命令合并

1
2
3
4
5
$ cat id_rsa.pub>> authorized_keys
$ Chmod 600 authorized_kdys
$ ssh root@192.168.0.165 cat ~/.ssh/id_rsa.pub>> authorized_keys
$ ssh root@192.168.0.166 cat ~/.ssh/id_rsa.pub>> authorized_keys
$ ssh root@192.168.0.167 cat ~/.ssh/id_rsa.pub>> authorized_keys

(4)把Master服务器的authorized_keys、known_hosts复制到Slave服务器的/root/.ssh目录

1
2
3
$ scp authorized_keys root@192.168.0.165:~/.ssh
$ scp authorized_keys root@192.168.0.166:~/.ssh
$ scp authorized_keys root@192.168.0.167:~/.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
2
systemctl start ntpd     #启动时间同步程序
systemctl enable 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
2
export  JAVA_HOME=/usr/local/java_version
export PATH=$JAVA_HOME/bin/:$PATH

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
2
3
4
5
6
7
8
9
10
11
12
13
14
shell> groupadd mysql
shell> useradd -r -g mysql -s /bin/false mysql
shell> cd /usr/local
shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysql
shell> mkdir mysql-files
shell> chown mysql:mysql mysql-files
shell> chmod 750 mysql-files
shell> bin/mysqld --initialize --user=mysql
shell> bin/mysql_ssl_rsa_setup
shell> bin/mysqld_safe --user=mysql &
# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql.server

默认密码如下
enter description here
3) 修改my.cnf的内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
[mysql] 
default-character-set=utf8

[mysqld]
skip-name-resolve
port=3306
basedir=/usr/local/mysql # 设置mysql的安装目录
datadir=/usr/local/mysql/data # 设置mysql数据库的数据的存放目录
max_connections=200 # 允许最大连接数
character-set-server=utf8
default-storage-engine=INNODB # 创建新表时将使用的默认存储引擎
lower_case_table_names=1
max_allowed_packet=16M

4) 初始化密码

1
2
3
4
5
mysql> SET PASSWORD = PASSWORD('123456');
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

5) 添加远程访问权限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
mysql> use mysql; 
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> update user set host = '%' where user = 'root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> grant all privileges on *.* to root@'%' identified by '123456' with grant option;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> select host, user from user;
+-----------+-----------+
| host | user |
+-----------+-----------+
| % | root |
| localhost | mysql.sys |
+-----------+-----------+
mysql> quit
$ /etc/init.d/mysqld restart //一定要重启才会生效。

6) 设置开机自启

1
chkconfig mysql on

3 设置本地库

3.1 apache安装(ambari节点)

1
2
yum install apache           //搭建本地仓库
systemctl start httpd && systemctl enable httpd

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
2
3
4
5
6
7
[ambari]
name=ambari-2.7.4.0
baseurl=http://192.168.1.3/ambari/centos7/2.7.4.0-118/
gpgcheck=1

gpgkey=http://192.168.1.3/ambari/centos7/2.7.4.0-118/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1

hdp.repo

1
2
3
4
5
6
[HDP]
name=HDP-3.1.4.0
baseurl=http://192.168.1.3/HDP/centos7/3.1.4.0-315/
gpgcheck=0

enabled=1

hdp-gpl.repo

1
2
3
4
5
6
[HDP-GPL]
name=HDP-GPL-3.1.4.0
baseurl=http://192.168.1.3/HDP-GPL/centos7/3.1.4.0-315/
gpgcheck=0

enabled=1

hdp-utils.repo

1
2
3
4
5
6
[HDP-UTILS]
name=HDP-UTILS-3.1.4.0
baseurl=http://192.168.1.3/HDP-UTILS/centos7/1.1.0.22/
gpgcheck=0

enabled=1

4.2 生成缓存

1
2
yum clean all
yum makecache

4.3 安装Ambari Server

1
yum install ambari-server

离线版没有postgresql,需要提前使用–downloadonly下载好.

4.3.1 初始化Ambar

enter description here
备注: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
enter description here

5 安装HDP集群

集群名称 zhjx
enter description here
centos选择rathat7,输入本地私库的url,其他类型删除。
enter description here
输入节点主机名,下载管理节点的ssh密码,id_rsa 文件,在页面上传密钥
备注,必须安装如下格式,不能使用hadoop2
enter description here

没有按照上图设置主机名,会出现主机名不合规的提示。
enter description here

这里经常安装失败,可以查看日志排查。
enter description here
检查无误,NEXT→通过即可
如果这个步骤失败了错误,记得多看日志,多找问题,如果还不行的话,回档咯

1
2
3
4
[root@master ~]# # ambari-server stop    #停止命令
[root@master ~]# # ambari-server reset #重置命令
[root@master ~]# # ambari-server setup #重新设置
[root@master ~]# # ambari-server start #启动命令

问题1:
centos7.3/4安装ambari2.6以上版本报EOF occurred in violation of protocol (_ssl.c:579)
enter description here
解决办法:
enter description here

开始可以少选些服务,减少错误,后面还可以添加。
HDFS、Hive、HBase、Sqoop、ZooKeeper、Flume
enter description here
节点分配,我这里默认了
enter description here
设置密码,我这里直接都设置为admin1234
enter description here
数据库连接都采用root用户,
enter description here

配置数据库的时候执行下黄色部分的命令

image-20210716093644199

enter description here
enter description here
enter description here

设置各组件的路径,我这里默认
enter description here
默认了
enter description here
默认了
enter description here
默认了
enter description here
enter description here

这一步也是经常报错,看日志解决吧。

5.1.1 设置组件自启动

admin>>Service Auto Start 所有组件全部开启
enter description here

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
问题原因:数据库连接失败
enter description here
网上查找原因:是需要在mysql连接url后面添加 ?useSSL=false,其实不然。
enter description here

enter description here
以上问题都是一个原因经尝试,都和ambari-server的配置文件有关系。
配置如下:
enter description here
无论是使用IP地址,还是配置的主机名,都不可以链接到数据库。配置为localhost恢复正常。
如下:
enter description here

6.4 问题4:hive组件配置数据库时,需要执行一下mysql连接驱动的路径的命令在master节点

否则数据库连接测试总是失败。

1
ambari-server setup --jdbc-db=mysql –jdbc-driver=/usr/share/java/mysql-connector-java.jar

enter description here

6.5 6.5 问题5:SmartSense Gateway is not active

原因:服务器离线,无法访问域名地址,忽略即可。

enter description here

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服务

img

调整服务节点

img

img

img

如上图操作:

在nameNode上创建检查点

1、 登录Namenode Host Hadoop3.htsb。

2、 将NameNode放在安全模式(只读模式)

1
sudo su hdfs -l -c 'hdfs dfsadmin -safemode enter'

img

3、 一旦处于安全模式,创建一个检查点

1
sudo su hdfs -l -c 'hdfs dfsadmin -saveNamespace'

img

img

img

img

如上图所示:

初始化journalnode

1、 登录Namenode Host Hadoop3.htsb。

2、 运行初始化journalnode

1
sudo su hdfs -l -c 'hdfs namenode -initializeSharedEdits'

img

3、 一旦Ambari检测到已成功初始化,您将能够继续。

img

img

img

如上图所示:

初始化预期的HA元数据

1、 登录Namenode Host Hadoop3.htsb

2、 通过运行初始化NameNode自动故障转移的元数据

1
sudo su hdfs -l -c 'hdfs zkfc -formatZK'

img

3、 登录新Namenode节点namenode1.htsb

4、 通过运行初始化其他nameNode的元数据

1
sudo su hdfs -l -c 'hdfs namenode -bootstrapStandby'

img

下一步

img

img

img

-------------本文结束感谢您的阅读-------------

本文标题:hadoop集群部署2-离线版

文章作者:OperationMAN

发布时间:2021年04月19日 - 17:04

最后更新:2022年06月05日 - 21:06

原始链接:https://kxinter.gitee.io/2021/04/19/hadoop集群部署2/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

坚持原创技术分享,您的支持将鼓励我继续创作!