<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
首先我們為了之後繼續搭建軟體,這裡沒有使用docker-compose,而是通過構建四臺centos,再在裡面搭建我們所需要的元件
宿主機最好提供10 GB的RAM,硬碟佔用大概會在40G以上
本次採用的線上安裝方式,cdh為6.3.2版本,系統為centos7.4, docker節點可以為任意多個,下文將以3個docker容器為範例進行展示。此方法也可用在docker swarm上,docker容器能夠互連,網路互通即可
離線安裝包地址:
連結: https://pan.baidu.com/s/1vMm0yMYya2vhbEabeJMPHQ 提取碼: xbrx
解除安裝(可選)
如果之前安裝過舊版本的Docker,可以使用下面命令解除安裝:
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine docker-ce
安裝docker
首先需要大家虛擬機器器聯網,安裝yum工具
yum install -y yum-utils device-mapper-persistent-data lvm2 --skip-broken
然後更新本地映象源:
# 設定docker映象源 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 第二步 sed -i 's/download.docker.com/mirrors.aliyun.com/docker-ce/g' /etc/yum.repos.d/docker-ce.repo # 第三步 yum makecache fast
然後輸入命令:
yum install -y docker-ce
docker-ce為社群免費版本。稍等片刻,docker即可安裝成功。
宿主機初始化
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
構建容器的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 network create --subnet=172.10.0.0/16 hadoop_net && docker network ls
啟動容器
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
引數解釋:
我們進入容器,設定一些東西
docker exec -it cm.hadoop bash
將root的登入密碼改為root
$ su root $ passwd $ root $ root
安裝基礎環境
yum install -y kde-l10n-Chinese telnet reinstall glibc-common vim wget ntp net-tools && yum clean all
此步如果出錯,請嘗試容器是否可以正常聯網,檢查docker網橋設定
vim ~/.bashrc
,在末尾新增
export LC_ALL=zh_CN.utf8 export LANG=zh_CN.utf8 export LANGUAGE=zh_CN.utf8
執行
localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 && source ~/.bashrc && echo $LANG
這一步是必須要做的,因為hadoop叢集如果時間不同步會出現通訊失敗的情況
安裝ntp
yum install ntp -y
同步時間
ntpdate -u ntp1.aliyun.com
修改時區
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
再建立一個定時任務,用於定時同步時間(防止虛擬機器器停止後時間異常)
crontab -e # 新增 0 */2 * * * /usr/sbin/ntpdate ntp1.aliyun.com
啟動ntp服務
systemctl start ntpd && systemctl enable ntpd && date
使用wget安裝(也可以單獨部署,單獨部署這裡不再贅述):
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
使用wget會非常的慢,我們可以上傳給宿主機,然後通過docker命令拷貝給centos-chd
# 前提是容器的/root/hadoop_CHD/mysql目錄必須事先建立。 docker cp mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar {容器ID}:/root/hadoop_CHD/mysql
準備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
這樣下載很慢,建議用finalshell等工具直接從自己的電腦上上傳到虛擬機器器中,直接連線宿主機的10022埠即可
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
準備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
搭建本地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
yum install -y java-1.8.0-openjdk-devel.x86_64
檢視一下:
java -version
jdk會預設安裝在/usr/lib/jvm
目錄下:
這樣安裝沒有設定JAVA_HOME
,我們需要進一步設定,不然後面安裝會報錯
( cat <<EOF #set java environment JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk PATH=$PATH:$JAVA_HOME/bin CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME CLASSPATH PATH EOF ) >> /etc/profile && source /etc/profile && java -version
安裝設定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
建資料庫表
( 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
儲存為:/root/c.sql
獲取MySQL初始密碼
systemctl start mysqld && grep password /var/log/mysqld.log | sed 's/.*(............)$/1/'
執行SQL指令碼
mysql -u root -p
輸入查詢出的預設密碼,然後執行:
source /root/c.sql
設定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/
這裡有坑,就是這個驅動版本不能太高,剛開始我的是5.1.47的驅動,然後就會報錯,換了5.1.6的就好了(手動上傳),還有就是驅動不能帶版本號
名字要為mysql-connector-java.jar
安裝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
設定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/
初始化scm庫
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm 123456Aa.
接著上面的,如果驅動沒有問題
啟動cloudera-server服務
systemctl start cloudera-scm-server.service && sleep 2 && tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log | grep "INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server"
這裡如果出錯,請多看錯誤紀錄檔,一般為驅動未找到,或者是bean構建失敗等等,如果失敗不要反覆重啟服務,因為scm
資料庫裡面的資料很可能會出現問題,應該刪除該資料庫再重新啟動
到這裡如果沒有什麼問題,你可以在你的瀏覽器裡面看到頁面,http://IP:7180/cmf/login 賬號密碼:admin/admin
先別急著操作,先設定兩個slave結點
以下為worker容器的準備方式,若為多個時,重複執行以下步驟,建立多個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
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
到這裡正常的話我們就有三臺主機了
和之前的操作一樣,先安裝基本工具
上一步建立的所有容器均執行,修改root的登入密碼改為root
$ su root $ passwd $ root $ root
然後執行
設定中文環境
yum install -y kde-l10n-Chinese telnet reinstall glibc-common vim wget ntp net-tools && yum clean all
設定中文環境變數
( 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
這一步是必須要做的,因為hadoop叢集如果時間不同步會出現通訊失敗的情況
安裝ntp
yum install ntp -y
同步時間
ntpdate -u ntp1.aliyun.com
修改時區
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
再建立一個定時任務,用於定時同步時間(防止虛擬機器器停止後時間異常)
crontab -e# 新增0 */2 * * * /usr/sbin/ntpdate ntp1.aliyun.com
啟動ntp服務
systemctl start ntpd && systemctl enable ntpd && date
設定MySQL JDBC
這裡為了防止出錯,建議設定和master結點一樣的驅動,且不要帶版本號
mkdir -p /usr/share/java/
上傳驅動即可
修改CM主機的host檔案
這樣我們可以很方便的使用後面的名字存取這些主機
echo "172.10.0.3 cdh01.hadoop cdh01" >> /etc/hosts echo "172.10.0.4 cdh02.hadoop cdh02" >> /etc/hosts
這裡我們還可以設定一下免密碼登入
http://IP:7180/cmf/login 賬號密碼:admin/admin
歡迎介面:
此面一直點選
繼續
,需要同意條款的同意條款
然後就可以來到叢集安裝的歡迎介面
我們來安裝叢集
選擇繼續,並給叢集起一個名字
設定主機地址: 172.10.0.[2-4]
選擇儲存
自定義儲存庫:http://172.10.0.2/cloudera-repos
Jdk安裝
SSH憑據,密碼為容器root使用者的登入密碼,此處為root
安裝代理
安裝巨量資料元件
叢集狀態檢查
叢集設定
選擇你要安裝的元件
選擇好你要安裝的巨量資料元件,然後點繼續
這裡如果選擇了hive之類的元件,需要在cm結點上建立一個資料庫,可以用元件名命名
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE DATABASE hive DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; grant all privileges on scm.* to scm@'localhost' identified by '密碼'; grant all privileges on scm.* to scm@'%' identified by '密碼'; grant all privileges on hive.* to hive@'localhost' identified by '密碼'; grant all privileges on hive.* to hive@'%' identified by '密碼'; CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; grant all privileges on hue.* to hue@'%' identified by '密碼'; grant all privileges on hue.* to hue@'localhost' identified by '密碼2'; CREATE DATABASE rm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; grant all privileges on rm.* to rm@'localhost' identified by '密碼'; grant all privileges on rm.* to rm@'%' identified by '密碼'; flush privileges;
紅色表示必填的專案
Datanode-> /dfs/datanode
Namenode-> /dfs/namenode
HDFS檢查點-> /dfs/checkpoint
NodeManager 本地目錄-> /dfs/nodemanager
然後就等待叢集構建完成!
到此這篇關於docker搭建Hadoop CDH高可用叢集實現的文章就介紹到這了,更多相關docker Hadoop CDH高可用叢集內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45