3臺阿里雲ECS安裝CDH大資料叢集過程(CentOS7.4+獨立資料盤)
0x、環境說明
直接購買3臺阿里雲的ECS(配置4C/32G/30G系統盤+1T資料盤)
購買時先在阿里雲生成一個金鑰對,把.pem私鑰儲存到本地,然後購買時選擇使用金鑰進行無密碼SSH登陸,注意統一使用該金鑰對進行映象部署。
服務開通後,進行如下操作。
一、配置hostname和hosts
1. 三臺機器分別設定hostname為(需要重啟ECS):
- master.bd.cn
- slave1.bd.cn
- slave2.bd.cn
2. 然後三臺的/etc/hosts統一配置如下對映:
<master.bd.cn的內網IP> master.bd.cn
<slave1.bd.cn的內網IP> slave1.bd.cn
<slave2.bd.cn的內網IP> slave2.bd.cn
二、配置三臺ECS之間無密碼SSH登陸
1. 將之前下載的.pem私鑰上傳到三臺機器的/root/.ssh/目錄下。
# 重新命名金鑰
mv xxx.pem id_rsa
# 修改檔案許可權
chmod 600 id_rsa
2. 然後分別通過ssh訪問進行驗證,例如:
ssh root@slave1.bd.cn
如果登陸不成功,請自行排查問題。
三、掛載資料盤到/opt目錄(後面CDH會部署到這裡)
1. 建立物理分割槽
我們只有一個資料盤,預設的位置是在/dev/vdb
可以有以下幾種方法檢視當前系統中的磁碟:
fdisk -l
lsblk
parted -l
對/dev/vdb進行分割槽:
fdisk /dev/vdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x4710ccf3.
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition`s system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): 11943039
Partition 1 of type Linux and of size 5.7 GiB is set
Command (m for help): wq
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
2. 基於物理分割槽建立邏輯卷
邏輯卷(LVM)
當我們建立了了一個分割槽之後,它的大小便固定了,這個不利於之後的擴充套件,為此有了LVM,它可以動態地改變分割槽的大小。
LVM中主要有以下三個概念:
- PV(Physical Volume):即物理分割槽或者磁碟。
- VG(Volume Group):卷組,多個PV組成一個VG,VG就像一個池子一樣。
- LV(Logic Volume):邏輯卷,在VG上建立出來的對機器可見的分割槽,有自己的檔案系統。
雖然LVM可以使用裸盤作為PV,但是並不推薦這麼做,推薦先對磁碟進行分割槽,在用於LVM。
LVM使用步驟
使用LVM主要分為以下幾步:
- 通過物理分割槽建立PV
- 通過PV建立VG
- 在VG上建立LV
- 格式化LV
- 掛載LV
ECS Centos7.4預設沒有lvm管理包,先安裝lvm
yum install lvm*
通過命令建立PV
pvcreate /dev/vdb1
# 建立名為LVMVG的組
vgcreate LVMVG /dev/vdb1
# 建立並將所有空間分配給lv1
lvcreate -l 100%FREE -n lv1 LVMVG
# 格式化lv1
mkfs.ext4 /dev/LVMVG/lv1
3. 將邏輯卷掛載到/opt目錄
mount /dev/LVMVG/lv1 /opt
# 配置自動掛載
echo /dev/LVMVG/lv1 /opt ext4 defaults 0 0 >> /etc/fstab
其他一些命令:
# umount
umount /opt
# 刪除LV/VG/PV
lvremove /dev/LVMVG/lv1
vgremove LVMVG
pvremove /dev/vdb1
四、安裝JDK和Mysql
1. 3臺ECS都要安裝JDK (注意,請直接安裝oracle jdk,不要使用openjdk,不然CDH不支援,後續還需要重新安裝jdk)
yum install java-1.8.0-openjdk
2. master.bd.cn主節點單獨安裝mysql
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
yum localinstall mysql57-community-release-el7-8.noarch.rpm
yum install mysql-community-server
systemctl start mysqld
systemctl enable mysqld
systemctl daemon-reload
# 檢視root初始密碼
grep `temporary password` /var/log/mysqld.log
# 登陸mysql
mysql -p
# 修改root密碼
mysql> ALTER USER `root`@`localhost` identified by `密碼<數字+大小寫字母+特殊字元+最少8位>`;
mysql> flush privileges;
# 開啟遠端登陸
mysql> grant all privileges on *.* to `root`@`%` identified by `密碼` with grant option;
mysql> flush privileges;
mysql> exit;
五、安裝依賴包
yum -y install chkconfig
yum -y install bind-utils
yum -y install psmisc
yum -y install libxslt
yum -y install zlib
yum -y install sqlite
yum -y install cyrus-sasl-plain
yum -y install cyrus-sasl-gssapi
yum -y install fuse
yum -y install portmap
yum -y install fuse-libs
yum -y install redhat-lsb
六、準備CDH離線安裝
Cloudera Manager 下載目錄
http://archive.cloudera.com/cm5/cm/5/
CDH 下載目錄
http://archive.cloudera.com/cdh5/parcels/5.15.0/
manifest.json 下載
http://archive.cloudera.com/cdh5/parcels/5.15.0/manifest.json
CHD5 相關的 Parcel 包放到主節點的/opt/cloudera/parcel-repo/
目錄中
CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel.sha1
重新命名為 CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel.sha
這點必須注意,否則,系統會重新下載 CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel
檔案
在3臺ECS上均建立資料夾/opt/cloudera-manager
mkdir /opt/cloudera-manager
把下載好的cloudera-manager-centos7-cm5.15.0_x86_64.tar.gz
安裝包上傳至 master.bd.cn 節點/opt/
目錄
在 master.bd.cn 節點拷貝 cloudera-manager-centos7-cm5.15.0_x86_64.tar.gz
到所有節點:
scp cloudera-manager-centos7-cm5.15.0_x86_64.tar.gz root@slave1.bd.dp:/opt/
scp cloudera-manager-centos7-cm5.15.0_x86_64.tar.gz root@slave2.bd.dp:/opt/
所有ECS節點解壓安裝 Cloudera Manager Server & Agent
cd /opt
tar xvzf cloudera-manager*.tar.gz -C /opt/cloudera-manager
七、開始部署SCM
1. 建立使用者 cloudera-scm(所有節點)
cloudera-scm 使用者說明,摘自官網:
Cloudera Manager Server and managed services are configured to use the user account cloudera-scm by default, creating a user with this name is the simplest approach. This created user, is used automatically after installation is complete.
Cloudera管理器伺服器和託管服務被配置為在預設情況下使用使用者帳戶Cloudera-scm,建立具有這個名稱的使用者是最簡單的方法。建立使用者,在安裝完成後自動使用。
執行:在所有節點建立cloudera-scm使用者
useradd --system --home=/opt/cloudera-manager/cm-5.15.0/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
2. 配置 CM Agent
修改 master.bd.cn節點/opt/cloudera-manager/cm-5.15.0/etc/cloudera-scm-agent/config.ini
中的server_host
為主節點的主機名。
在 master.bd.cn 操作將 master.bd.cn節點修改後的 (複製到所有節點)
scp /opt/cloudera-manager/cm-5.15.0/etc/cloudera-scm-agent/config.ini root@slave1.bd.cn:/opt/cloudera-manager/cm-5.15.0/etc/cloudera-scm-agent/config.ini
scp /opt/cloudera-manager/cm-5.15.0/etc/cloudera-scm-agent/config.ini root@slave2.bd.cn:/opt/cloudera-manager/cm-5.15.0/etc/cloudera-scm-agent/config.ini
3. 配置 CM Server 的資料庫
在主節點 master.bd.cn 初始化CM5的資料庫:
下載 mysql 驅動包:
cd /opt/cloudera-manager/cm-5.15.0/share/cmf/lib
wget http://maven.aliyun.com/nexus/service/local/repositories/hongkong-nexus/content/Mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar
初始化資料庫:
cd /opt/cloudera-manager/cm-5.15.0/share/cmf/schema/
./scm_prepare_database.sh mysql -hmaster.bd.dp -uroot -p密碼 --scm-host master.bd.dp cm scm 密碼
引數說明:
引數 | 說明 |
mysql | 資料庫用的是mysql,如果安裝過程中用的oracle,那麼該引數就應該改為oracle |
-hhadoop1 | 資料庫建立在hadoop1主機上面,也就是主節點上面. |
-uroot | 以root使用者執行mysql |
-p123456 | mysql使用者 |
–scm-host | CMS的主機,一般是和mysql安裝的主機是在同一個主機上 |
最後三個引數 | 分別為資料庫名稱、資料庫使用者名稱、資料庫密碼 |
4. 配置CDH本地安裝源
建立 Parcel 目錄
master.bd.cn 節點建立目錄/opt/cloudera/parcel-repo
然後將下載好的檔案
CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel.sha1 manifest.json
拷貝到該目錄下。
mkdir -p /opt/cloudera/parcel-repo chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo cd /opt/cloudera/parcel-repo
重新命名,CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel.sha1
否則,系統會重新下載 CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel
mv CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel.sha1 CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel.sha
slave1.bd.cn和slave2.bd.cn 節點建立目錄/opt/cloudera/parcels,執行:
mkdir -p /opt/cloudera/parcels chown cloudera-scm:cloudera-scm /opt/cloudera/parcels
5. 啟動 CM Manager&Agent 服務
注意,mysql 服務啟動,防火牆關閉
master.bd.cn節點執行:
/opt/cloudera-manager/cm-5.15.0/etc/init.d/cloudera-scm-server start
/opt/cloudera-manager/cm-5.15.0/etc/init.d/cloudera-scm-agent start
slave1和slave2節點執行:
/opt/cloudera-manager/cm-5.15.0/etc/init.d/cloudera-scm-agent start
訪問 http://master.bd.cn:7180 若可以訪問(使用者名稱、密碼:admin),則安裝成功。
Manager 啟動成功需要等待一段時間,過程中會在資料庫中建立對應的表需要耗費一些時間。
八、開始安裝CDH
CM Manager && Agent 成功啟動後,登入前端頁面進行 CDH 安裝配置。
admin / admin 登入後
免費版本的 CM5 已經去除 50 個節點數量的限制。
各個 Agent 節點正常啟動後,可以在當前管理的主機列表中看到對應的節點。
選擇要安裝的節點,點繼續。如果配置本地 Parcel 包無誤,那麼下圖中的已下載,應該是瞬間就完成了,然後就是耐心等待分配過程就行了,大約 10 多分鐘吧,取決於內網網速。
點選繼續,開始安裝。
可看到檢查有兩個問題。
1)已啟用透明大頁面壓縮,可能會導致重大效能問題。請執行
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
以禁用此設定,然後將同一命令新增到 /etc/rc.local 等初始化指令碼中,以便在系統重啟時予以設定。
2)不支援openjdk,手工安裝oracle jdk
下載oracle jdk 1.8 rpm安裝包 下載地址
上傳到3臺ECS上,執行安裝
yum install jdk-8u181-linux-x64.rpm
解決後,重新檢測。如果出現問題,請重新安裝CDH,見本文最後章節《CDH安裝失敗了,如何重新安裝》
這一步需要我們手工建立對應的資料庫,暫時都用一個mysql服務,修改資料庫主機均為master.bd.cn。
建立資料庫,推薦使用utf8mb4字符集,並分配scm使用者許可權給hive庫(當然也可以新建個hive使用者)
CREATE DATABASE `hive` CHARACTER SET `utf8mb4`;
GRANT Select, Alter, Alter Routine, Create, Create Routine, Create Temporary Tables, Create View, Delete, Drop, Event, Execute, Index, Insert, Lock Tables, References, Show View, Trigger, Update ON `hive`.* TO `scm`@`master.bd.dp`;
CREATE DATABASE `hue` CHARACTER SET `utf8mb4`;
GRANT Alter, Alter Routine, Create, Create Routine, Create Temporary Tables, Create View, Delete, Drop, Event, Execute, Index, Insert, Lock Tables, References, Select, Show View, Trigger, Update ON `hue`.* TO `scm`@`master.bd.dp`;
CREATE DATABASE `am` CHARACTER SET `utf8mb4`;
GRANT Alter, Alter Routine, Create, Create Routine, Create Temporary Tables, Create View, Delete, Drop, Event, Execute, Index, Insert, Lock Tables, References, Select, Show View, Trigger, Update ON `am`.* TO `scm`@`master.bd.dp`;
CREATE DATABASE `oozie` CHARACTER SET `utf8mb4`;
GRANT Alter, Alter Routine, Create, Create Routine, Create Temporary Tables, Create View, Delete, Drop, Event, Execute, Index, Insert, Lock Tables, References, Select, Show View, Trigger, Update ON `oozie`.* TO `scm`@`master.bd.dp`;
點選測試,如果報錯:
JDBC driver cannot be found. Unable to find the JDBC database jar on host : slave2.bd.dp.
需要下載jdbc到lib目錄下:
cd /opt/cloudera-manager/cm-5.15.0/share/cmf/lib/
wget http://maven.aliyun.com/nexus/service/local/repositories/hongkong-nexus/content/Mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar
重新測試連結,通過後,繼續
自行修改,繼續
通過Cloudera Manager新增Hive服務,在啟動Hive的時候遇到錯誤:
.org.apache.hadoop.hive.metastore.HiveMetaException: Failed to load driver
這種情況是缺少jdbc驅動,於是新增jdbc驅動到相應的包下面。報的錯中提示了lib路徑,新增一下即可。(注意,最好所有節點都這樣執行一次)
cd /opt/cloudera/parcels/CDH-5.15.0-1.cdh5.15.0.p0.21/lib/hive/lib/
wget http://maven.aliyun.com/nexus/service/local/repositories/hongkong-nexus/content/Mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar
然後點選“Resume”重試。
很可能oozie也沒有,注意看日誌資訊,是從 /usr/share/java/mysql-connector-java.jar 自動複製,所以執行:
cp mysql-connector-java-5.1.38.jar /usr/share/java/mysql-connector-java.jar
然後重試,完成
可能遇到的一些問題:
1. hue的load balancer無法啟動
解決:安裝httpd和mod_ssl
yum -y install httpd
yum -y install mod_ssl
2. HDFS NFS Gateway 無法啟動、掛載失敗問題
解決:HDFS NFS Gateway工作需要依附 rpcbind 服務,所以啟動前需要確定rpcbind服務正常開啟。 service rpcbind start
但是HDFS NFS 服務會與系統自帶的NFS服務衝突,所以在啟動前需要關閉系統自帶的NFS服務。service nfs stop
service nfs stop
service rpcbind start
3. HDFS-副本不足的塊
原因是設定的副本備份數與DataNode的個數不匹配。
我們在之前理論篇中已經說明了dfs. replication屬性預設是3,也就是說副本數—塊的備份數預設為3份。
但是我們這裡叢集只有兩個DataNode。所以導致了達不到目標—副本備份不足。
解決方法
這種情況下的修復有2個步驟,1是設定目標備份數為2,2是通過命令更改當前備份數。
副本不足和副本過多都可以用這2個步驟解決,主要是跟DataNode的個數對應。
設定目標備份數為2
點選叢集-HDFS-配置
搜尋dfs. replication,設定為2後儲存更改。
dfs.replication這個引數其實只在檔案被寫入dfs時起作用,雖然更改了配置檔案,但是不會改變之前寫入的檔案的備份數。
所以我們還需要步驟2
在cm0中通過命令更改備份數:
su hdfs
hadoop fs -setrep -R 2 /
這裡的-R 2的數字2就對應我們的DataNode個數。
如果遇到safe mode無法執行,則先執行解除safemode命令:
hadoop dfsadmin -safemode leave
九、安裝 Kafka 元件
1. 配置並分配 Kafka parcel 包
在 Web 頁面中,主機 -> Parcel 裡面會列出當前叢集以配置和分配的 parcel 包,目前只配置了 CDH5,Kafka 單獨存在於其他 parcel 包中,所以需要單獨載入 parcel ,然後分配到叢集內各節點。
Cloudera官方Kafka元件的parcel包下載地址為:http://archive.cloudera.com/kafka/parcels/latest/ 照舊下載 percel 檔案,以及該檔案的 sha1 串,然後重新命名 ***.sha1 為 ***.sha 方可。
下載好以上兩個檔案後,放到 master.bd.cn 節點的 /opt/cloudera/parcel-repo/ 目錄下
無需重啟 server 守護程式,在頁面即可線上重新整理、分配、啟用。
2. 叢集內安裝 Kafka 服務
這裡需要確認和修改 2 個預設配置
- 複製程式,預設為1,修改為 3(視業務量而定)
- 分割槽數,預設分割槽數為 50,這裡暫且保留。
- 刪除舊topic,預設開啟,不做更改。
業務埠為 9092 。
啟動可能會遇到OOM的錯誤,導致無法啟動
Fatal error during KafkaServerStartable startup. Prepare to shutdown
java.lang.OutOfMemoryError: Java heap space
解決:
登入到kafka執行的節點,修改kafa啟動指令碼:
vi /opt/cloudera/parcels/KAFKA-3.1.0-1.3.1.0.p0.35/lib/kafka/bin/kafka-server-start.sh
新增最後一行啟動命令前一行新增 export KAFKA_HEAP_OPTS=”-Xmx1G -Xms1G”
然後在CM中重試即可。
附1:CDH安裝失敗了,如何重新安裝
1> 刪除Agent節點的UUID
# rm -rf /opt/cloudera-manager/cm-5.15.0/lib/cloudera-scm-agent/*
2> 清空主節點CM資料庫
進入主節點的Mysql資料庫,然後drop database cm;
3> 刪除Agent節點namenode和datanode節點資訊
# rm -rf /opt/dfs/nn/*
# rm -rf /opt/dfs/dn/*
4> 在主節點上重新初始化CM資料庫
5> 執行啟動指令碼
主節點:# /opt/cloudera-manager/cm-5.15.0/etc/init.d/cloudera-scm-server start
Agent節點:# /opt/cloudera-manager/cm-5.15.0/etc/init.d/cloudera-scm-agent start
過一會兒,即可通過主節點的7180埠重新進行CDH的安裝 http://主節點IP:7180/cmf/login。
附2:HUE執行Oozie-Sqoop1命令式找不到msyql driver問題
cd /opt/cloudera/parcels/CDH-5.15.0-1.cdh5.15.0.p0.21/lib/sqoop/
wget http://maven.aliyun.com/nexus/service/local/repositories/hongkong-nexus/content/Mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar
然後重啟Oozie和Hue服務。
相關文章
- CDH安裝大資料叢集大資料
- 大資料之CDH叢集搭建大資料
- 大資料叢集搭建 – 2. CDH叢集安裝 – NTP,MYSQL,nginx安裝大資料MySqlNginx
- 大資料叢集搭建 – 1. CDH叢集安裝 – 環境準備大資料
- 離線部署 CDH 5.12.1 及使用 CDH 部署 Hadoop 大資料平臺叢集服務Hadoop大資料
- 大資料平臺CDH搭建大資料
- Cloudera Manager安裝 & 搭建CDH叢集Cloud
- 大資料平臺Hadoop叢集搭建大資料Hadoop
- Hadoop叢集安裝-CDH5(3臺伺服器叢集)HadoopH5伺服器
- 什麼工具可以採集獨立站點資料?如何分析資料?
- Hive安裝(本地獨立模式,MySql為後設資料庫)Hive模式MySql資料庫
- CDH版本大資料叢集下搭建Avro(hadoop-2.6.0-cdh5.5.4.gz + avro-1.7.6-cdh5.5.4.tar.gz的搭建)...大資料VRHadoopH5
- 使用青雲搭建大資料叢集大資料
- 大資料Spark叢集模式配置大資料Spark模式
- MySQL資料庫叢集自動安裝指令碼!MySql資料庫指令碼
- OPPO大資料計算叢集資源排程架構演進大資料架構
- 大資料叢集修機器名大資料
- 大資料7.1 - hadoop叢集搭建大資料Hadoop
- 儲存過程返回資料集儲存過程
- Jstorm叢集搭建過程/Jstorm叢集一鍵安裝部署JSORM
- 搭建獨立大資料實驗室的設想大資料
- centos7 安裝k8s1.30.1高可用叢集(非獨立etcd叢集)CentOSK8S
- 資料庫叢集資料庫
- Hadoop叢集安裝-CDH5(5臺伺服器叢集)HadoopH5伺服器
- Redis叢集 - cluster叢集、資料分片Redis
- 阿里雲伺服器ECS掛載資料盤—linux系統阿里伺服器Linux
- 學習筆記(6):搞定大資料平臺:從入門到實戰-叢集JDK安裝配置筆記大資料JDK
- CDH5大資料實驗平臺搭建筆記H5大資料筆記
- Solaris本地叢集VCS安裝過程(試用License)
- 大資料叢集核心引數調優大資料
- MySQL資料庫叢集MySql資料庫
- 全球電商獨立站商品資料庫資料庫
- 資料共享(淺複製)與資料獨立(深複製)
- sql server2016叢集資料庫解除安裝SQLServer資料庫
- 搭建kubernetes 叢集的安裝過程和方法
- “大資料”時代 叢集NAS更給力薦大資料
- 最快方式搭建docker大資料 測試叢集Docker大資料
- 通過memberlist庫實現gossip管理叢集以及叢集資料互動Go