docker安裝cdh6.3.2集群(聯網版)


一、前言

本次采用的在線安裝方式,cdh為6.3.2版本,系統為centos7.4, docker節點可以為任意多個,下文將以3個docker容器為示例進行展示。此方法也可用在docker swarm上,docker容器能夠互連,網絡互通即可。

 

二、基礎系統鏡像制作

說明:此步在安裝完docker后進行操作,步驟位置放的不對!!!

因為dockerhub上提供的centos系統為精簡系統,使用時會缺少一些組件,制作一個centos7的基礎鏡像,Dockerfile為:

FROM docker.io/ansible/centos7-ansible
RUN yum -y install openssh-server
RUN yum -y install bind-utils
RUN yum -y install which
RUN yum -y install sudo 

   

在Dockerfile同級目錄執行:

docker build -t centos7-cdh .

生成要用的基礎centos7的鏡像。

三、宿主機初始化

以下在docker的宿主機上進行操作。

3.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

  

3.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

 

3.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

  

3.4安裝基本工具

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

  

3.5關閉防火牆

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

 

3.6設置SELinux模式

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

  

3.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

  

3.8 創建自定義網絡

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

  

3.9啟動容器

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 \
--restart always \
--name cm.hadoop \
--privileged \
centos7-cdh \
/usr/sbin/init \
&& docker ps

  

 

四、容器安裝ClouderaManager

4.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

  

4.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

 

4.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

  

啟動ntp服務

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

 

4.4准備MySQL安裝包(采用docker獨立安裝跳過此步)

mkdir -p /root/hadoop_CHD/mysql \
&& wget -O /root/hadoop_CHD/mysql/mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar \
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar \
&& ls /root/hadoop_CHD/mysql

 

說明:

1、通過wget下載mysql安裝十分慢,可以使用window系統的電腦訊雷等下載工具下載后,將安裝包放至宿主機,再使用docker cp mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar {容器ID}:/root/hadoop_CHD/mysql命令將安裝包放至容器中,前提是容器的/root/hadoop_CHD/mysql目錄必須事先創建。

2、可以將mysql部署在一個獨立的容器中,若采用此方法則跳此步,單獨部署的方法在此不再闡述。

 

4.5准備MySQL JDBC驅動

mkdir -p /root/hadoop_CHD/mysql-jdbc \
&& wget -O /root/hadoop_CHD/mysql-jdbc/mysql-connector-java-5.1.48.tar.gz \
https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.48.tar.gz \
&& ls /root/hadoop_CHD/mysql-jdbc

說明:

1、通過wget下載安裝十分慢,可以使用window系統的電腦訊雷等下載工具下載后,將安裝包放至宿主機,再使用docker cp mysql-connector-java-5.1.48.tar.gz {容器ID}:/root/hadoop_CHD/mysql-jdbc命令將安裝包放至容器中,前提是容器的/root/hadoop_CHD/mysql-jdbc目錄必須事先創建。

 

4.6准備Cloudera-Manager安裝包

mkdir -p /root/hadoop_CHD/cloudera-repos \
&& wget -O /root/hadoop_CHD/cloudera-repos/allkeys.asc \
https://archive.cloudera.com/cm6/6.3.0/allkeys.asc \
&& wget -O /root/hadoop_CHD/cloudera-repos/cloudera-manager-agent-6.3.0-1281944.el7.x86_64.rpm \
https://archive.cloudera.com/cm6/6.3.0/redhat7/yum/RPMS/x86_64/cloudera-manager-agent-6.3.0-1281944.el7.x86_64.rpm \
&& wget -O /root/hadoop_CHD/cloudera-repos/cloudera-manager-daemons-6.3.0-1281944.el7.x86_64.rpm \
https://archive.cloudera.com/cm6/6.3.0/redhat7/yum/RPMS/x86_64/cloudera-manager-daemons-6.3.0-1281944.el7.x86_64.rpm \
&& wget -O /root/hadoop_CHD/cloudera-repos/cloudera-manager-server-6.3.0-1281944.el7.x86_64.rpm \
https://archive.cloudera.com/cm6/6.3.0/redhat7/yum/RPMS/x86_64/cloudera-manager-server-6.3.0-1281944.el7.x86_64.rpm \
&& wget -O /root/hadoop_CHD/cloudera-repos/cloudera-manager-server-db-2-6.3.0-1281944.el7.x86_64.rpm \
https://archive.cloudera.com/cm6/6.3.0/redhat7/yum/RPMS/x86_64/cloudera-manager-server-db-2-6.3.0-1281944.el7.x86_64.rpm \
&& wget -O /root/hadoop_CHD/cloudera-repos/enterprise-debuginfo-6.3.0-1281944.el7.x86_64.rpm \
https://archive.cloudera.com/cm6/6.3.0/redhat7/yum/RPMS/x86_64/enterprise-debuginfo-6.3.0-1281944.el7.x86_64.rpm \
&& wget -O /root/hadoop_CHD/cloudera-repos/oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm \
https://archive.cloudera.com/cm6/6.3.0/redhat7/yum/RPMS/x86_64/oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm \
&& ll /root/hadoop_CHD/cloudera-repos

說明:

1、通過wget下載mysql安裝十分慢,可以使用window系統的電腦訊雷等下載工具下載后,將安裝包放至宿主機,再使用docker cp 下載的rpm {容器ID}:/root/hadoop_CHD/cloudera-repos命令將安裝包放至容器中,前提是容器的/root/hadoop_CHD/cloudera-repos目錄必須事先創建。

 

4.7准備Parcel包

mkdir -p /root/hadoop_CHD/parcel \
&& wget -O /root/hadoop_CHD/parcel/ CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel \
https://archive.cloudera.com/cdh6/6.3.2/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel \
&& wget -O /root/hadoop_CHD/parcel/manifest.json \
https://archive.cloudera.com/cdh6/6.3.2/parcels/manifest.json \
&& ll /root/hadoop_CHD/parcel

說明:

1、通過wget下載mysql安裝十分慢,可以使用window系統的電腦訊雷等下載工具下載后,將安裝包放至宿主機,再使用docker cp 下載的parcel  {容器ID}:/root/hadoop_CHD/parcel命令將安裝包放至容器中,前提是容器的/root/hadoop_CHD/parcel目錄必須事先創建。

2、隨着時間推移官網可能會不定期刪除測試不穩定的版本,可能導致上述鏈接無可用的下載資源,可以進入https://archive.cloudera.com/cdh6/找到想要的版本進行下載。

 

4.8 搭建本地yum源

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

  

4.9安裝jdk

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

 

 

4.10 安裝配置MySQL數據庫(采用docker獨立安裝跳過此步)

cd /root/hadoop_CHD/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_CHD/mysql/ \
&& yum clean all \
&& rpm -qa |grep mysql

  

 

4.11數據庫授權

(
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腳本

mysql -uroot –p

輸入查詢出的默認密碼,然后執行:

source /root/c.sql

  

 

4.12配置mysql jdbc驅動

mkdir -p /usr/share/java/ \
&& cd /root/hadoop_CHD/mysql-jdbc/;tar -zxvf mysql-connector-java-5.1.48.tar.gz \
&& cp  /root/hadoop_CHD/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_CHD/mysql-jdbc/ \
&& ls /usr/share/java/

  

4.13安裝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

  

 

4.14配置parcel庫

cd /opt/cloudera/parcel-repo/;mv /root/hadoop_CHD/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_CHD/parcel/ \
&& chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/* \
&& ll /opt/cloudera/parcel-repo/

  

4.15初始化scm庫

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

  

 

4.16啟動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節點。

5.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 \
--restart always \
--name cdh01.hadoop \
--privileged \
centos7-cdh \
/usr/sbin/init \
&& docker ps

  

說明:

1、上述黃色部分,因創建不同的容器配置而不同,根據實際情況填寫。

 

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 \
--restart always \
--name cdh02.hadoop \
--privileged \
centos7-cdh \
/usr/sbin/init \
&& docker ps

  

 

5.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

  

5.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

  

5.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

  

啟動ntp服務

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

  

5.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/

說明:

1、通過wget下載安裝十分慢,可以使用window系統的電腦訊雷等下載工具下載后,將安裝包放至宿主機,再使用docker cp mysql-connector-java-5.1.48.tar.gz {容器ID}:/usr/share/java/命令將安裝包放至容器中,前提是容器的/usr/share/java/目錄必須事先創建。

 

5.6修改CM主機的host文件

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

注意:不是在worker節點上操作,而是在3.9創建的cloud-manager節點上操作,有多少個work容器,執行多少次,內容按真實情況填寫即可。

 

六、CM管理平台創建CDH集群

6.1登陸CM管理平台

http://IP:7180/cmf/login 賬號密碼:admin/admin

 

6.2歡迎頁

 

 

此面一直點擊“繼續”。

 

 

 

 

6.3集群安裝

歡迎頁

 

 

 

創建集群

 

 

 

添加節點

 

 紅色部分為: 172.10.0.[2-4]

 

選擇存儲

 

 自定義存儲庫:http://172.10.0.2/cloudera-repos

 

Jdk安裝

 

 

 

 

 SSH憑據,密碼為容器root用戶的登錄密碼,此處為root。

 

 

安裝代理

 

 

 

安裝大數據組件

 

 

 

 

集群狀態檢查

 

 

 

 

6.4集群設置

 

 

 

紅色為添加3個節點

 

 

Datanode-> /dfs/datanode

Namenode-> /dfs/namenode

HDFS檢查點-> /dfs/checkpoint

NodeManager 本地目錄-> /dfs/nodemanager

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM