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 安装
- 下载住程序地址:http://archive.cloudera.com/cm5/cm/5/
- 下载离线数据包地址:http://archive.cloudera.com/cdh5/parcels/5.16.2/
- 下载mysql连接地址:http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.48/
- 接下来安装的是 CDH 5.16.2 版本所以CDH这块都下载 5.16.2 最新即可
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
0
二维码
海报
Ubuntu 16.04 安装CDH 5.16.2
一、集群环境
CDH 只支持 ubuntu 14.04 与 ubuntu 16.04 目前 ubuntu 18.04 就别想安装了
集群建议,最少8核32G内存,namenode节点建议64G内存。
描述
主……
文章目录
关闭