docker安装CDH6.3.1集群版(内含安装包)

一、前言

本次采用的在线安装方式,cdh为6.3.2版本,系统为centos7.4, docker节点可以为任意多个,下文将以3个docker容器为示例进行展示。此方法也可用在docker swarm上,docker容器能够互连,网络互通即可。安装前请确保内存够用,我的32g内存3个节点启动后内存使用率75%。

二、宿主机初始化

以下在docker的宿主机上进行操作。
 

2.1配置yum源

yum install -y wget \
&& mkdir -p /etc/yum.repos.d/repo_bak \
&& mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo_bak/ \
&& wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo \
&& wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo \
&& yum clean all \
&& yum makecache \
&& yum update –y

 

2.2安装docker-ce

yum install -y yum-utils device-mapper-persistent-data lvm2 \
&& yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo\
&& yum makecache fast \
&& yum -y install docker-ce \
&& yum clean all \
&& docker version

 

2.3配置docker

data-root:docker根目录路径
insecure-registries:docker私有仓库地址
registry-mirrors:公共镜像仓库加速地址

mkdir -p /etc/docker/ && \
(
cat <<EOF
{
  "data-root":"/home/docker",
  "registry-mirrors": ["https://1e7waog4.mirror.aliyuncs.com"]
}
EOF
) >>/etc/docker/daemon.json \
&& systemctl start docker \
&& systemctl enable docker \
&& cat /etc/docker/daemon.json \
&& docker version

安装docker命令补全工具

yum install -y bash-completion \
&& source /usr/share/bash-completion/completions/docker \
&& source /usr/share/bash-completion/bash_completion \
&& yum clean all

 

2.4安装基本工具

yum install -y vim wget ntp net-tools \
&& yum clean all

 

2.5关闭防火墙

systemctl stop firewalld \
&& systemctl disable firewalld \
&& systemctl status firewalld

 

2.6设置SELinux模式

setenforce 0 \
|| sed -i 's/enforcing/disabled/g' /etc/selinux/config \
&& sed -i 's/permissive/disabled/g' /etc/selinux/config \
&& getenforce

 

2.7配置时间同步

vim /etc/ntp.conf

将时钟服务器更改为如下4个

server 0.cn.pool.ntp.org
server 1.cn.pool.ntp.org
server 2.cn.pool.ntp.org   
server 3.cn.pool.ntp.org

注意:若为离线安装,则要将服务器地址改为内网时间服务器地址。

启动设置ntp服务

systemctl start ntpd \
&& systemctl enable ntpd \
&& ntpdate -u 0.cn.pool.ntp.org \
&& hwclock --systohc \
&& date

 

2.8创建自定义网络

docker network create --subnet=172.10.0.0/16 hadoop_net \
&& docker network ls

 

2.9下载CDH相关资源

由于CDH已经从2021年2月以后已经不提供免费下载了,所以我这里收集了一份已经下载好的安装必须的软件包集合(包括CDH,MYSQL,Dockerfile)。请大家自行下载
CDH资源下载 提取码: u07l

 

2.10创建基础系统镜像

在下载后CDH文件夹中,Dockerfile同级目录执行:

docker build -t centos7-cdh .

 

2.11启动容器

如果想要开机自启动容器。可以在命令中加上--restart always

docker run -d \
--add-host cm.hadoop:172.10.0.2 \
--net hadoop_net \
--ip 172.10.0.2 \
-h cm.hadoop \
-p 10022:22 \
-p 7180:7180 \
--name cm.hadoop \
--privileged \
centos7-cdh \
/usr/sbin/init \
&& docker ps

 

2.12拷贝安装CDH需要的文件到容器

在下载后CDH文件夹中,hadoop_CDH文件夹同级目录执行:
{dockerId} 为2.11中创建的容器id

docker cp hadoop_CDH {dockerId}:/root/hadoop_CDH

 

三、容器安装ClouderaManager

 

3.1初始化环境

进入第二步创建的容器中,并将root的登录密码改为root

docker exec –it {dockerId} /bin/bash
su root
passwd
root
root

安装基础环境

yum install -y kde-l10n-Chinese telnet reinstall glibc-common vim wget ntp net-tools \
&& yum clean all

 

3.2配置中文环境变量

(
cat <<EOF
export LC_ALL=zh_CN.utf8
export LANG=zh_CN.utf8
export LANGUAGE=zh_CN.utf8
EOF
) >> ~/.bashrc \
&& localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 \
&& source ~/.bashrc \
&& echo $LANG

 

3.3设置NTP时间同步服务

vim /etc/ntp.conf

更改为以下四个时钟服务器

server 0.cn.pool.ntp.org
server 1.cn.pool.ntp.org
server 2.cn.pool.ntp.org
server 3.cn.pool.ntp.org

调整时区

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

启动ntp服务

systemctl start ntpd && \
systemctl enable ntpd && \
ntpdate -u 0.cn.pool.ntp.org && \
hwclock --systohc && \
date

 

3.4搭建本地yum源

yum -y install httpd createrepo \
&& systemctl start httpd \
&& systemctl enable httpd \
&& cd /root/hadoop_CDH/cloudera-repos/ && createrepo . \
&& mv /root/hadoop_CDH/cloudera-repos /var/www/html/ \
&& yum clean all \
&& ll /var/www/html/cloudera-repos

 

3.5安装jdk

cd /var/www/html/cloudera-repos/;rpm -ivh oracle-j2sdk1.8-1.8.0update181-1.x86_64.rpm

 

3.6安装配置MySQL数据库

cd /root/hadoop_CDH/mysql/;tar -xvf mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar \
&& yum install -y libaio numactl \
&& rpm -ivh mysql-community-common-5.7.27-1.el7.x86_64.rpm \
&& rpm -ivh mysql-community-libs-5.7.27-1.el7.x86_64.rpm \
&& rpm -ivh mysql-community-client-5.7.27-1.el7.x86_64.rpm \
&& rpm -ivh mysql-community-server-5.7.27-1.el7.x86_64.rpm \
&& rpm -ivh mysql-community-libs-compat-5.7.27-1.el7.x86_64.rpm \
&& echo character-set-server=utf8 >> /etc/my.cnf \
&& rm -rf /root/hadoop_CDH/mysql/ \
&& yum clean all \
&& rpm -qa |grep mysql

 

3.7数据库授权

(
cat <<EOF
set password for root@localhost = password('123456Aa.');
grant all privileges on *.* to 'root'@'%' identified by '123456Aa.';
flush privileges;
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY '123456Aa.';
GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY '123456Aa.';
GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY '123456Aa.';
GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY '123456Aa.';
GRANT ALL ON metastore.* TO 'hive'@'%' IDENTIFIED BY '123456Aa.';
GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY '123456Aa.';
GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY '123456Aa.';
GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY '123456Aa.';
GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY '123456Aa.';
SHOW DATABASES;
EOF
) >> /root/c.sql

获取MySQL初始密码

systemctl start mysqld && grep password /var/log/mysqld.log | sed 's/.*\(............\)$/\1/'

执行SQL脚本 {password}为刚刚查询的初始密码

mysql -uroot –p‘{password}’

登陆后执行

source /root/c.sql

 

3.8配置mysql jdbc驱动

mkdir -p /usr/share/java/ \
&& cd /root/hadoop_CDH/mysql-jdbc/;tar -zxvf mysql-connector-java-5.1.48.tar.gz \
&& cp  /root/hadoop_CDH/mysql-jdbc/mysql-connector-java-5.1.48/mysql-connector-java-5.1.48-bin.jar /usr/share/java/mysql-connector-java.jar \
&& rm -rf /root/hadoop_CDH/mysql-jdbc/ \
&& ls /usr/share/java/

 

3.9安装Cloudera Manager

(
cat <<EOF
[cloudera-manager]
name=Cloudera Manager 6.3.0
baseurl=http://172.10.0.2/cloudera-repos/
gpgcheck=0
enabled=1
EOF
) >> /etc/yum.repos.d/cloudera-manager.repo \
&& yum clean all \
&& yum makecache \
&& yum install -y cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server \
&& yum clean all \
&& rpm -qa | grep cloudera-manager

 

3.10配置parcel库

cd /opt/cloudera/parcel-repo/;mv /root/hadoop_CDH/parcel/* ./ \
&& sha1sum CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel | awk '{ print $1 }' > CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha \
&& rm -rf /root/hadoop_CDH/parcel/ \
&& chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/* \
&& ll /opt/cloudera/parcel-repo/

 

3.11初始化scm库

/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm 123456Aa.

 

3.12启动cloudera-server服务

systemctl start cloudera-scm-server \
&& sleep 2 \
&& tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log | grep "INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server"

 

四、配置CDH的worker节点

以下为worker容器的准备方式,若为多个时,重复执行以下步骤,创建多个worker节点。
 

4.1创建多个worker容器

创建2个work容器
Worker-1:

docker run -d \
--add-host cm.hadoop:172.10.0.2 \
--add-host cdh01.hadoop:172.10.0.3\
--net hadoop_net \
--ip 172.10.0.3 \
-h cdh01.hadoop \
-p 20022:22 \
--name cdh01.hadoop \
--privileged \
centos7-cdh \
/usr/sbin/init \
&& docker ps

Worker-2:

docker run -d \
--add-host cm.hadoop:172.10.0.2 \
--add-host cdh02.hadoop:172.10.0.4 \
--net hadoop_net \
--ip 172.10.0.4 \
-h cdh02.hadoop \
-p 30022:22 \
--name cdh02.hadoop \
--privileged \
centos7-cdh \
/usr/sbin/init \
&& docker ps

说明:
如果需要开机重启可以添加--restart always开启
 

4.2装基本工具

上一步创建的所有容器均执行,修改root的登录密码改为root

docker exec –it {dockerId} /bin/bash
su root
passwd
root
root

然后执行:

yum install -y kde-l10n-Chinese telnet reinstall glibc-common vim wget ntp net-tools \
&& yum clean all

 

4.3配置中文环境变量

(
cat <<EOF
export LC_ALL=zh_CN.utf8
export LANG=zh_CN.utf8
export LANGUAGE=zh_CN.utf8
EOF
) >> ~/.bashrc \
&& localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 \
&& source ~/.bashrc \
&& echo $LANG

 

4.4配置NTP时间同步服务

vim /etc/ntp.conf

更改为以下四个时钟服务器

server 0.cn.pool.ntp.org
server 1.cn.pool.ntp.org
server 2.cn.pool.ntp.org
server 3.cn.pool.ntp.org

调整时区

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

启动ntp服务

systemctl start ntpd && \
systemctl enable ntpd && \
ntpdate -u 0.cn.pool.ntp.org && \
hwclock --systohc && \
date

 

4.5配置MySQL JDBC

mkdir -p /usr/share/java/ \
&& wget -O /usr/share/java/mysql-connector-java-5.1.48.tar.gz \
https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.48.tar.gz \
&& cd /usr/share/java/;tar -zxvf mysql-connector-java-5.1.48.tar.gz \
&& cp /usr/share/java/mysql-connector-java-5.1.48/mysql-connector-java-5.1.48-bin.jar /usr/share/java/mysql-connector-java.jar \
&& rm -rf mysql-connector-java-5.1.48 mysql-connector-java-5.1.48.tar.gz \
&& ls /usr/share/java/

 

4.6修改CM主机的host文件

echo "172.10.0.3      cdh01.hadoop cdh01" >> /etc/hosts
echo "172.10.0.4      cdh02.hadoop cdh02" >> /etc/hosts

注意:不是在worker节点上操作,而是在2.11创建的cloud-manager节点上操作,有多少个work容器,执行多少次,内容按真实情况填写即可。

五、CM管理平台创建CDH集群

 

5.1登陆CM管理平台

http://IP:7180/cmf/login 账号密码:admin/admin
 

5.2欢迎页

1.png

此面一直点击“继续”。


2.png

3.png

 

5.3集群安装

欢迎页

4.png

创建集群
5.png

添加节点
6.png

红色部分为: 172.10.0.[2-4]
选择存储
7.png

自定义存储库:http://172.10.0.2/cloudera-repos
Jdk安装
8.png

9.png

SSH凭据,密码为容器root用户的登录密码,此处为root。
安装代理
10.png

 
卡在这一步的情况比较多,我来说说我遇到的情况和解决办法
 

解决办法1:

cloudera安装报错 socket.gaierror: [Errno -2] Name or service not known
修改/usr/bin/host文件名

mv /usr/bin/host /usr/bin/host1

返回重试Install Agents

解决办法2:

安装失败。 无法接收 Agent 发出的检测信号。
直接在要安装agent的节点中重启cloudera-scm-agent服务
如果重启一次没有成功就重启两次。
重启后可以通过tail -200 /var/log/cloudera-scm-agent/cloudera-scm-agent.log命令查看是否报错

docker exec -it {cdh01.containerId} bash
systemctl restart cloudera-scm-agent.service
docker exec -it {cdh02.containerId} bash
systemctl restart cloudera-scm-agent.service

注意:如果是别的安装方式,还需要检查/etc/hosts 里面配置的ip和hostname是否与/etc/hostname 里面的机器名相对应,但是我们这种方式是配置好的,不用检查。

解决办法3:

安装失败。查看详细信息后报错
cloudera-manager-agent must have Version=6.3.1 and Build=1466458, exiting
这是应为 repo 和parcel 版本不一致导致的,这时候我们就要手动安装cloudera-manager-agent

1.在所有Slave节点安装agement,
这步需要先将CDH\hadoop_CDH\cloudera-repos 目录下的
cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
两个安装包拷贝到Slave节点中,之后执行

yum localinstall cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm cloudera-manager-agent  -y

所有Slave节点修改CM Server地址

vim /etc/cloudera-scm-agent/config.ini

# 将server_host修改为CM-Server所在的主机名
server_host= cm.hadoop

启动Agent

systemctl start cloudera-scm-agent
# 查看agent状态
systemctl status cloudera-scm-agent
#查看日志
tail -100f /var/log/cloudera-scm-agent/cloudera-scm-agent.log

重启服务后刷新页面http://IP:7180/ 你就会看到这个界面

11.png

点击主机->所有主机

12.png

你会看到3台机器已经纳入管理了

13.png

说明agent安装成功了,接下来我们加继续安装大数据组建

由于刚才我们建集群的步骤被中断了,所以我们再来建一次

集群->添加集群

14.png

之后前面的步骤我就不再重复了,只需要在这个页面改为当前管理的主机

15.png

之后配置不变进入安装界面

16.png
17.png

 

5.4集群设置

18.png

19.png

红色为添加3个节点


20.png

这里填写我们配置好的数据库
服务 主机名称 数据库名称 用户名 密码
Oozie cm.hadoop oozie oozie 123456Aa.
Hive cm.hadoop metastore hive 123456Aa.
Hue cm.hadoop hue hue 123456Aa.
21.png

22.png

Datanode-> /dfs/datanode
Namenode-> /dfs/namenode
HDFS检查点-> /dfs/checkpoint
NodeManager 本地目录-> /dfs/nodemanager

23.png

安装完成!


24.png

 
 
 

六、用户设置

用于spark等需要用hdfs用户,需要设置一下dhfs账户的登陆权限

以cm机器为例

docker exec -it {cdh01.containerId} bash
vim /etc/passwd
#搜有hdfs
:/hsfs
#修改 hdfs:x:996:993:Hadoop HDFS:/var/lib/hadoop-hdfs:/sbin/nologin
#为 hdfs:x:996:993:Hadoop HDFS:/var/lib/hadoop-hdfs:/bin/bash
:wq

之后测试一下

su hdfs
spark-shell
25.png

 
 
 
参考链接:
https://www.cnblogs.com/runnerjack/p/12693597.html
https://blog.csdn.net/weixin_39062173/article/details/93065342
https://blog.csdn.net/yabingshi_tech/article/details/67632472

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,367评论 6 512
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,959评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,750评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,226评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,252评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,975评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,592评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,497评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,027评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,147评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,274评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,953评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,623评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,143评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,260评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,607评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,271评论 2 358

推荐阅读更多精彩内容