Akiraka Akiraka
  • 首页
  • Linux
    • ELK
    • PHP
    • Shell
    • Nginx
    • Docker
      • Docker Compose
    • Centos
    • Ubuntu
    • Jenkins
  • Python
  • Mac OS
  • Windows
  • 大数据
    • Hadoop
    • CDH
    • Hive
    • Spark
    • ZooKeeper
  • 微服务
    • Kubernetes
    • Helm
  • Other
  • Quark
  • 首页
  • Linux
    • ELK
    • PHP
    • Shell
    • Nginx
    • Docker
      • Docker Compose
    • Centos
    • Ubuntu
    • Jenkins
  • Python
  • Mac OS
  • Windows
  • 大数据
    • Hadoop
    • CDH
    • Hive
    • Spark
    • ZooKeeper
  • 微服务
    • Kubernetes
    • Helm
  • Other
  • Quark
首页 › Hadoop › CDH › Ubuntu 16.04 安装CDH 5.16.2

Ubuntu 16.04 安装CDH 5.16.2

Akiraka1年前

文章目录

  • 一、集群环境
  • 二、主节点免钥登录
    • 1、namenode-01 与 namenode-02生成秘钥
  • 三、主机名配置
    • 1、编辑 hosts 文件
    • 2、将 hosts 文件分发到各个节点中
  • 四、配置 jdk
    • 1、下载 jdk
    • 2、配置 jdk 环境变量
    • 3、分发 jdk 与环境变量到各个节点
    • 4、刷新全部服务器 环境变量
  • 五、ntp 时间同步
    • 1、主节点安装 ntp 服务与配置
    • 2、其他节点安装 ntpdate 服务与同步主节点时
    • 3、其他节点添加定时任务
    • 4、在主节点查看
  • 六、部署 mysql 服务
    • 1、创建 docker 容器编排
    • 2、创建对应数据库
  • 七、准备 CDH 安装
    • 1、创建对应目录与下载软件包
    • 2、解压 cloudera manager 并配置
    • 3、分发 cloudera manager 到各个节点
    • 4、创建用户与权限
    • 5、安装 python 2.7 与 hue 依赖组件
    • 6、启动 CDH 服务端
    • 7、启动 CDH 客户端
  • 八、服务器安全
  • 九、在 Web 界面中完成 CDH 安装
  • 十、性能优化建议
    • 1、Spark 更换版本

一、集群环境

  • 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
#hadoop#linux#ubuntu
0
分享
Akiraka 站长
文章 121评论 10
相关文章
  • Docker 修改默认存储路径
  • SPARK 命令行读取 parquet 数据
  • 本地文件拷贝到 HDFS
  • Centos/Ubuntu Linux 系统 根目录扩容方法
  • 搭建 Redis 主从搭建配置
Akiraka
站长
本人擅长 Ai、Au、Fl、Ae、Pr、Ps 等软件的安装与卸载,精通 CSS、JavaScript、PHP、Python、Shell、Go 等单词的拼写,熟悉 Windows、Linux、Mac、Android、IOS 等系统的开关机!
121文章
10评论
47获赞
想找什么搜一下
文章聚合
RocketMQ 集群容器多机编排主主
3月前
DockerFile 源码编译 Nginx 容器
1年前
Docker 导入导出和重命名与新容器
1年前
Centos 8 更换阿里源
1年前
sqlite3数据库
1年前
微信小程序
微信小程序
标签云
brew cdh centos cmd docker docker compose elasticsearch elk filebase filebeat gitlab grafana hadoop helm hive hue jdk jenkins k8s kibana kubernetes liniux linux logstash mac mikrotik mydumper mysql nfs nginx openssl oss php pip pyspark python RabbitMQ redis rocketmq shell Spark ubuntu windows ZooKeeper 容器编排
Copyright © 2019-2021 Akiraka. Designed by nicetheme. 沪18036911号