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 › Centos 7.7 安装 CDH 6.3.1

Centos 7.7 安装 CDH 6.3.1

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 安装
    • 7.1、创建对应目录与下载软件包
    • 7.2、分发cloudera manager程序
    • 7.3、cloudera manager 服务端与客户端安装
    • 7.4、 cloudera manager 配置
    • 7.5 配置 http 服务器
    • 7.6、启动 CDH 服务端
    • 7.7、启动 CDH 客户端
    • 7.8、开机启动
  • 八、服务器安全
  • 九、在 Web 界面中完成 CDH 安装
  • 十、性能优化建议
    • 1、Spark 更换版本
    • 2、Mysql 优化
    • 3、HDFS 优化

一、集群环境

  • 集群建议,最少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 权限,将其关闭即可

#cdh#centos#hadoop#linux
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获赞
想找什么搜一下
文章聚合
Ubuntu 18.04 修改国内源
1年前
macOS Catalina 10.15 第三方软件文件提示已损坏解决办法
1年前
WordPress 隐藏后台地址
1年前
使用 Docker 部署 LNMP 环境
1年前
Docker-Compose 网络配置
6月前
微信小程序
微信小程序
标签云
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号