Centos 7.7 安装 CDH 6.3.1
一、集群环境
- 集群建议,最少8核32G内存,namenode节点建议64G内存。
描述 | 主机名 | ip地址 | 系统 |
---|---|---|---|
名称节点 | namenode-01 | 192.168.101 | ubuntu 16.04 |
名称节点 | namenode-02 | 192.168.102 | ubuntu 16.04 |
数据节点 | datanode-01 | 192.168.103 | ubuntu 16.04 |
数据节点 | datanode-02 | 192.168.104 | ubuntu 16.04 |
数据节点 | datanode-03 | 192.168.105 | ubuntu 16.04 |
数据节点 | datanode-04 | 192.168.106 | ubuntu 16.04 |
二、主节点免钥登录
- CDH 可以不做免秘钥登录,做主要方便namenode节点控制其他节点,还有就是分发一些文件。
- 只需要在2台namenode-01与namenode-02生成秘钥即可。
1、namenode-01 与 namenode-02生成秘钥
# 一路回车即可
ssh-keygen -t rsa
# 进入 ssh 目录
cd ~/.ssh
# 自己给自己免密
cat id_rsa.pub >> authorized_keys
# 将 namenode-02 生成的公钥追加到 namenode-01 的 authorized_keys 中
# 将 namenode-01 的 authorized_keys 分发给其他几点中
scp ~/.ssh/authorized_keys 192.168.102:~/.ssh
scp ~/.ssh/authorized_keys 192.168.103:~/.ssh
scp ~/.ssh/authorized_keys 192.168.104:~/.ssh
scp ~/.ssh/authorized_keys 192.168.105:~/.ssh
scp ~/.ssh/authorized_keys 192.168.106:~/.ssh
# 最后在各个服务器重启 sshd 服务
server sshd restart
三、主机名配置
1、编辑 hosts 文件
- 在 namenode-01 中配置hosts即可,因为已经做好了免钥登录就不用一台改了
- 主机名千万别使用大写,一点要全小写字母。
- 查看主机名配置:cat /etc/hostname 不对就修改
# 编辑 /etc/hosts 文件
vim /etc/hosts
# 在下面添加主机名
192.168.1.101 namenode-01 namenode-01
192.168.1.102 namenode-02 namenode-02
192.168.1.103 datanode-01 datanode-01
192.168.1.104 datanode-02 datanode-02
192.168.1.105 datanode-03 datanode-03
192.168.1.106 datanode-04 datanode-04
2、将 hosts 文件分发到各个节点中
scp /etc/hosts namenode-02:/etc/hosts
scp /etc/hosts datanode-01:/etc/hosts
scp /etc/hosts datanode-02:/etc/hosts
scp /etc/hosts datanode-03:/etc/hosts
scp /etc/hosts datanode-04:/etc/hosts
四、配置 jdk
- 所以主机都需要配置 jdk
- jdk 需要Oracle版本的
1、下载 jdk
# jdk 部署在 /usr/java中
mkdir -p /usr/java
cd /usr/java
# 下载 jdk
wget http://mirrors.linuxeye.com/jdk/jdk-8u231-linux-x64.tar.gz
# 解压 jdk 并删除压缩包
tar xvf jdk-8u221-linux-x64.tar.gz && rm -rf jdk-8u221-linux-x64.tar.gz
- 下载 mysql-connector-java.jar
# 进入 /usr/share/java 文件夹
cd /usr/share/java
# 下载 mysql-connector-java.jar 因为要连接mysql这个必须下载
wget http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.48/mysql-connector-java-5.1.48.jar
# 重命名文件,带版本号不识别
mv mysql-connector-java-5.1.48.jar mysql-connector-java.jar
# 拷贝到JDK文件夹中,使用spark-submit运行py会提示无法连接到mysql
cp /usr/share/java/mysql-connector-java.jar /usr/java/jdk1.8.0_221/jre/lib/ext/
2、配置 jdk 环境变量
# 编辑 /etc/profile 文件
vim /etc/profile
# 将以下内容添加到最下面
# JDK
export JAVA_HOME=/usr/java/jdk1.8.0_231
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH
3、分发 jdk 与环境变量到各个节点
# 分发 jdk 到各节点中
scp -r /usr/java namenode-02:/usr/java
scp -r /usr/java datanode-01:/usr/java
scp -r /usr/java datanode-02:/usr/java
scp -r /usr/java datanode-03:/usr/java
scp -r /usr/java datanode-04:/usr/java
# 分发 profile 到各个节点中
scp /etc/profile namenode-02:/etc/profile
scp /etc/profile datanode-01:/etc/profile
scp /etc/profile datanode-02:/etc/profile
scp /etc/profile datanode-03:/etc/profile
scp /etc/profile datanode-04:/etc/profile
# 分发 mysql-connector-java-5.1.48.jar 到各节点中
scp /usr/share/java/mysql-connector-java.jar namenode-02:/usr/share/java
scp /usr/share/java/mysql-connector-java.jar datanode-01:/usr/share/java
scp /usr/share/java/mysql-connector-java.jar datanode-02:/usr/share/java
scp /usr/share/java/mysql-connector-java.jar datanode-03:/usr/share/java
scp /usr/share/java/mysql-connector-java.jar datanode-04:/usr/share/java
4、刷新全部服务器 环境变量
source /etc/profile
五、ntp 时间同步
1、主节点安装 ntp 服务与配置
- 阿里云主机安装 ntp 服务即可,因为其他节点直接就可以同步过来,而且时间很准。
# 安装 ntp 服务
apt-get install -y ntp
# 配置 ntp 服务
vim /etc/ntp.conf
# 在文件上面添加以下内容
# 自定义的time时区
server 0.asia.pool.ntp.org
server 1.asia.pool.ntp.org
server 2.asia.pool.ntp.org
server 3.asia.pool.ntp.org
# 当我们配置的外部时间同步不可用的时候,使用本地的时间
server 127.127.1.0 iburst local clock
# 允许哪些网段节点的机器来访问这台机器的时间
# 这个需要更具自己的网络来修改ip与网关
restrict 172.16.0.0 mask 255.255.0.0 nomodify notrap
# 启动 ntp 服务
server ntp start
# 查看 ntp 状态
server ntp status
# 查看同步时间服务器
ntpq -p
2、其他节点安装 ntpdate 服务与同步主节点时
# 安装 ntpdate 访问
apt-get install -y ntpdate
# 查看是否能同步主节点时间
root@namenode-02:~# ntpdate namenode-01
18 Oct 10:35:11 ntpdate[13024]: adjust time server 172.16.8.78 offset 0.000007 sec
3、其他节点添加定时任务
# 添加定时任务
crontab -e
# 添加以下内容
*/10 * * * * /usr/sbin/ntpdate namenode-01 > /dev/null 2>&1
4、在主节点查看
timedatectl
# 如果看到 NTP synchronized: yes 即可
六、部署 mysql 服务
1、创建 docker 容器编排
- 我这里直接部署 docker mysql,怎么安装docker和安装docker compose就不写了
- 贴下配置文件内容
# 创建目录
mkdir -p /data/compose
cd /data/compose
# 创建 docker-compose.yml 文件
vim docker-compose.yml
# 添加以下内容
version: "2"
services:
mysql-server:
image: mysql:5.7
container_name: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: "yourpassowrd"
volumes:
- /data/mysql/data:/var/lib/mysql
ports:
- "3306:3306"
# 启动容器,注需在 /data/compose 目录中方可运行
docker-compose up -d
# 停止容器
docker-compose stop
# 重启容器
docker-compose restart
2、创建对应数据库
# 安装 mysql 客户端
apt-get install -y mysql-client
# 进入 mysql 创建对应数据库与用户名密码
mysql -uroot -pyoupassword -h127.0.0.1
# 创建对应数据库
create database cmf DEFAULT CHARACTER SET utf8;
create database hue DEFAULT CHARACTER SET utf8;
create database amon DEFAULT CHARACTER SET utf8;
create database hive DEFAULT CHARACTER SET utf8;
create database oozie DEFAULT CHARACTER SET utf8;
# 创建对应数据库用户名与密码
grant all on cmf.* TO 'cmf'@'%' IDENTIFIED BY '123456';
grant all on hue.* TO 'hue'@'%' IDENTIFIED BY '123456';
grant all on amon.* TO 'amon'@'%' IDENTIFIED BY '123456';
grant all on hive.* TO 'hive'@'%' IDENTIFIED BY '123456';
grant all on oozie.* TO 'oozie'@'%' IDENTIFIED BY '123456';
# 刷新
flush privileges;
七、准备 CDH 安装
- Cloudera Manger 下载地址:https://archive.cloudera.com/cm6/6.3.1/redhat7/yum/RPMS/x86_64/
- 下载离线数据包地址:https://archive.cloudera.com/cdh6/6.3.1/parcels/
- 接下来安装的是 CDH 6.3.1 版本所以CDH这块都下载 6.3.1 最新即可
7.1、创建对应目录与下载软件包
- 这里的操作都是在 namenode-01 上操作
# 存放离线安装包
mkdir -p /root/cloudera-repo/
# 存放启动程序
mkdir -p /root/cloudera-manager
- 下载离线安装包
# 进入 /root/cloudera-manager 目录
cd /opt/cloudera-manager
# 下载 cloudera manager 建议用迅雷下载,然后传到服务器中,服务器下载太慢了。
https://archive.cloudera.com/cm6/6.3.1/redhat7/yum/RPMS/x86_64/cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
https://archive.cloudera.com/cm6/6.3.1/redhat7/yum/RPMS/x86_64/cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
https://archive.cloudera.com/cm6/6.3.1/redhat7/yum/RPMS/x86_64/cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm
# 进入 /root/cloudera-repo/ 目录
# 这里必须要下载3个文件,这3个文件都在对应的版本目录中。
https://archive.cloudera.com/cdh6/6.3.1/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel
https://archive.cloudera.com/cdh6/6.3.1/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel.sha1
https://archive.cloudera.com/cdh6/6.3.1/parcels/manifest.json
# 重命名文件,将文件的后缀名sha1改为sha,因为不这么改,离线安装时候找不到,系统会重新下载
mv CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel.sha1 CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel.sha
# 校验parcel文件完整性,先cat sha文件内的校验值,如果校验值不对重新下载。
cat CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel.sha
sha1sum CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel
7.2、分发cloudera manager程序
scp -r /root/cloudera-manager namenode-02:/root
scp -r /root/cloudera-manager datanode-01:/root
scp -r /root/cloudera-manager datanode-02:/root
scp -r /root/cloudera-manager datanode-03:/root
scp -r /root/cloudera-manager datanode-04:/root
7.3、cloudera manager 服务端与客户端安装
- 服务端需安装 daemons、server、agent 即可
- 客户端需安装 daemons、agent 即可
cd /root/cloudera-manager
# 服务端必须要按照以下顺序安装
yum install cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
yum install cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm
yum instlal cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
# 其他节点客户端安装
yum install cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
yum instlal cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
7.4、 cloudera manager 配置
- 服务端只需要在 namenode-01节点配置即可
- 客户端需要全部节点配置
# 配置 cloudera manager 服务端
vim /etc/cloudera-scm-server/db.properties
# 内容如下
com.cloudera.cmf.db.type=mysql
# 建议使用主机名,因为ip会变免得麻烦,这个主机名是mysql服务器那个
com.cloudera.cmf.db.host=namenode-01
com.cloudera.cmf.db.name=cmf
com.cloudera.cmf.db.user=cmf
com.cloudera.cmf.db.password=123456
com.cloudera.cmf.db.setupType=EXTERNAL
# 配置 cloudera manager 客户端
sed -i "s/server_host=localhost/server_host=namenode-01/g" /etc/cloudera-scm-agent/config.ini
7.5 配置 http 服务器
# 安装 httpd 服务
yum install -y httpd
# 启动 httpd 服务,并开机启动
systemctl start httpd && systemctl enabled httpd
# 拷贝 CDH 离线包到 html目录
mv /root/cloudera-repo/ /var/www/html/
7.6、启动 CDH 服务端
- 此操作在 namenode-01 中操作,其他节点不需要操作
- 服务端需启动 server 与 agent 服务
# 启动服务端
systemctl start cloudera-scm-server
# 查看启动日志
tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
7.7、启动 CDH 客户端
- 此操作所有节点操作,包括主节点
# 启动客户端
systemctl start cloudera-scm-agent
# 查看启动日志
tail -f /var/log/cloudera-scm-agent/cloudera-scm-agent.log
7.8、开机启动
systemctl enable cloudera-scm-agent
systemctl enable cloudera-scm-server
八、服务器安全
- 如果测试无所谓,线上云,建议修改22端口,与开启安全组,因为集群会暴露很多端口出去。
- 安装成功,使用 nginx 做反向代理把 7180 端口代理出去,服务器也就开放几个需要的端口。
- 我这里修改 sshd 端口,将默认端口改为其他端口。
- 以下操作在 namenode-01 上
# 编辑 /etc/ssh/sshd_config
# 进入 /etc/ssh/ 目录
cd /etc/ssh/
# 找到 Port 22 改为 Port 9420
vim sshd_config
# 然后将配置分发到各个节点上
scp sshd_config namenode-02:$PWD
scp sshd_config datanode-01:$PWD
scp sshd_config datanode-02:$PWD
scp sshd_config datanode-03:$PWD
scp sshd_config datanode-04:$PWD
# 在各节点重启 ssh 服务
server sshd restart
九、在 Web 界面中完成 CDH 安装
- 访问地址:192.168.101:7180
- 默认用户名与密码均为:admin
十、性能优化建议
1、Spark 更换版本
- Spark 默认使用 python 2.7 版本。这里更换系统自带版本 3.5.2
- 使用 pyspark 命令需要切换切换为 hdfs 不然会有错误
# 编辑 pyspark
sed -i s@-python@-python3@g /opt/cloudera/parcels/CDH-5.16.2-1.cdh5.16.2.p0.8/bin/pyspark
# 切换 hdfs 用户
su hdfs
# 运行 pyspark
pyspark
2、Mysql 优化
- 默认 mysql 可能性能不够导致一堆错误
- 第一种在mysql中修改,第二种修改my.ini文件,这里介绍第一种
# 进入 mysql 交互
show processlist;
show variables like 'max_connections';
show global status like 'max_used_connections';
set GLOBAL max_connections=1500;
3、HDFS 优化
- 默认系统 hdfs 没有登录权限,并且很多东西都要普通用户运行,要么开启HDFS用户否则操作HDFS 相关命令会报错
- 让普通用户能够正常操作 HDFS
进入 HDFS 配置项目,找到:检查 HDFS 权限,将其关闭即可
版权声明:
作者:Akiraka
链接:https://www.akiraka.net/linux/53.html
来源:Akiraka
文章版权归作者所有,未经允许请勿转载。
THE END
0
二维码
海报
Centos 7.7 安装 CDH 6.3.1
一、集群环境
集群建议,最少8核32G内存,namenode节点建议64G内存。
描述
主机名
ip地址
系统
名称节点
namenode-01
192.168.101
ubuntu 16.04
名……
文章目录
关闭