Ubuntu 16.04 安装CDH 5.16.2

一、集群环境

  • CDH 只支持 ubuntu 14.04 与 ubuntu 16.04 目前 ubuntu 18.04 就别想安装了
  • 集群建议,最少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

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

1、创建对应目录与下载软件包

  • 目录路径必须安装这个来,别自作主张
  • 这里的操作都是在 namenode-01 上操作
#   存放离线安装包
mkdir -p /opt/cloudera/parcel-repo/
#   存放启动程序
mkdir -p /opt/cloudera-manager
#   不创建会报错,也不影响使用
mkdir -p /var/lib/cloudera-scm-server
  • 下载离线安装包
#   进入 /opt/cloudera-manager 目录
cd /opt/cloudera-manager
#   下载 cloudera manager 建议用迅雷下载,然后传到服务器中,服务器下载太慢了。 
wget http://archive.cloudera.com/cm5/cm/5/cloudera-manager-xenial-cm5.16.2_amd64.tar.gz

#   进入 /opt/cloudera/parcel-repo 目录
#   这里必须要下载3个文件,这3个文件都在对应的版本目录中。
wget http://archive.cloudera.com/cdh5/parcels/5.16.2/CDH-5.16.2-1.cdh5.16.2.p0.8-xenial.parcel
wget http://archive.cloudera.com/cdh5/parcels/5.16.2/CDH-5.16.2-1.cdh5.16.2.p0.8-xenial.parcel.sha1
wget http://archive.cloudera.com/cdh5/parcels/5.16.2/manifest.json

#   重命名文件,将文件的后缀名sha1改为sha,因为不这么改,离线安装时候找不到,系统会重新下载
mv CDH-5.16.2-1.cdh5.16.2.p0.8-xenial.parcel.sha1 CDH-5.16.2-1.cdh5.16.2.p0.8-xenial.parcel.sha

#   校验parcel文件完整性,先cat sha文件内的校验值,如果校验值不对重新下载。
cat CDH-5.16.2-1.cdh5.16.2.p0.8-xenial.parcel.sha
sha1sum CDH-5.16.2-1.cdh5.16.2.p0.8-xenial.parcel

2、解压 cloudera manager 并配置

#   进入 /opt/cloudera-manager 目录
cd /opt/cloudera-manager
#   解压压缩包
tar xvf cloudera-manager-xenial-cm5.16.2_amd64.tar.gz

#   配置 cloudera manager 客户端
sed -i "s/server_host=localhost/server_host=namenode-01/g" /opt/cloudera-manager/cm-5.16.2/etc/cloudera-scm-agent/config.ini

#   配置 cloudera manager 服务端
vim /opt/cloudera-manager/cm-5.16.2/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

#   下载 mysql-connector-java.jar 因为要连接mysql这个必须下载
#   将下载的文件放到 /opt/cloudera-manager/cm-5.16.2/share/cmf/lib 中
cd /opt/cloudera-manager/cm-5.16.2/share/cmf/lib
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 

3、分发 cloudera manager 到各个节点

#   进入 /opt 目录
cd /opt
#   将 cloudera-manager 文件夹分发到其他节点上去
scp -r cloudera-manager namenode-02:$PWD
scp -r cloudera-manager datanode-01:$PWD
scp -r cloudera-manager datanode-02:$PWD
scp -r cloudera-manager datanode-03:$PWD
scp -r cloudera-manager datanode-04:$PWD

4、创建用户与权限

  • 这里需在全部节点上都要进行操作
#   安装 cdh 解压目录
mkdir -p /opt/cloudera/parcels

#   创建用户
useradd --system --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm

#   cloudera 目录修改用户及用户组
chown -R cloudera-scm:cloudera-scm /opt/cloudera
#   cloudera-manager 目录修改用户及用户组
chown -R cloudera-scm:cloudera-scm /opt/cloudera-manager
# /var/lib/cloudera-scm-server 目录修改用户及用户组,这个只需要在namenode-01上操作即可
chown -R cloudera-scm:cloudera-scm /var/lib/cloudera-scm-server

5、安装 python 2.7 与 hue 依赖组件

  • ubuntu 16.04 与 ubuntu 18.04 默认是 python 3版本,CDH 客户端运行需要 python 2.7版本
  • 这个步骤需要在全部节点上安装
  • 其他基本是 java 开发的,但 hue 是python开发的,系统需要安装依赖包否则连接mysql数据库报错
apt-get install -y python2.7

#   hue 必须安装这个否则报错
apt-get install -y python-dev
apt-get install -y python-lxml
apt-get install -y libmysqlclient-dev
pip install mysql-python

#   如果是 centos 系统安装
yum install -y python-lxml

6、启动 CDH 服务端

  • 此操作在 namenode-01 中操作,其他节点不需要操作
#   进入启动程序目录
cd /opt/cloudera-manager/cm-5.16.2/etc/init.d
#   启动服务端
./cloudera-scm-server start
#   然后查看服务器启动日志,启动过程性能好几十秒,性能不好要更久点,通常1分钟左右
tail -F ../../log/cloudera-scm-server/cloudera-scm-server.log
#   查看 7180 端口,如果能查询到 7180 端口那么就可以通过网页来访问了
netstar -anp | grep 7180

7、启动 CDH 客户端

  • 此操作所有节点操作
  • 备注:如果没有安装 python2.7版本或者没有启动服务端会报python 错误不用管,启动了服务端就好了
#   启动客户端,要保证客户端端口正常,否则无法检测到客户端如9000端口这个端口就很常用
/opt/cloudera-manager/cm-5.16.2/etc/init.d/cloudera-scm-agent start
#   查看客户端启动日志
tail -F /opt/cloudera-manager/cm-5.16.2/log/cloudera-scm-agent/cloudera-scm-agent.log

八、服务器安全

  • 如果测试无所谓,线上云,建议修改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

版权声明:
作者:Akiraka
链接:https://www.akiraka.net/linux/55.html
来源:Akiraka
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
Ubuntu 16.04 安装CDH 5.16.2
一、集群环境 CDH 只支持 ubuntu 14.04 与 ubuntu 16.04 目前 ubuntu 18.04 就别想安装了 集群建议,最少8核32G内存,namenode节点建议64G内存。 描述 主……
<<上一篇
下一篇>>
文章目录
关闭
目 录