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 安装

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
分享
二维码
海报
Centos 7.7 安装 CDH 6.3.1
一、集群环境 集群建议,最少8核32G内存,namenode节点建议64G内存。 描述 主机名 ip地址 系统 名称节点 namenode-01 192.168.101 ubuntu 16.04 名……
<<上一篇
下一篇>>
文章目录
关闭
目 录