雲上大資料系列1:手把手教你何如在ECS上搭建Hadoop開發測試環境(CDH版)
本篇是雲上大資料系列第一篇文章,主要介紹開發測試環境的搭建。在後續的文章中,我們還將會分享更多關於雲上大資料系統的效能分析和調優經驗,敬請期待。
大資料系統是典型的複雜分散式系統,搭建一套大資料系統不但需要大量的資源,還需要對大資料系統本省有一定的瞭解。雲端計算的普及使得大資料系統的快速部署,甚至一鍵部署成為可能。筆者在阿里雲上嘗試搭建了一套大資料系統,將部署的過程和大家分享一下。
- 資源環境:
ecs.d1.6xlarge × 5
- 軟體系統:
CDH 5.14.2
- 作業系統:
CentOS 7.3
以下教程基於Cloudera
官方教程,結合筆者實際部署過程中遇到的問題編寫而成。讀者在實踐的過程中可以將本文和官方教程結合來參考。官方教程點這裡檢視。
教程特點(做好心理準備):
需要下載 cloudera-manager-daemons
包(744M),cloudera-manager-agent
包(788M),下載過程比較慢,且中途容易出錯,需要多次重試。
如果對上述部署方式不滿意,還可以嘗試官方的第三種方式(預下載安裝包並手動安裝):
https://www.cloudera.com/documentation/enterprise/5-13-x/topics/cm_ig_install_path_c.html#cmig_topic_6_7
第一步:購買ECS
資源:
在阿里雲官方網站上購買5臺規格為ecs.d1.6xlarge
的機器。注意兩點:
- 修改機器名稱以區分不同的角色:1臺
master
,4臺worker
,例如cdh-m1, cdh-w1, cdh-w2, cdh-w3, cdh-w4
; - 點選下單前選擇密碼登入,並記住登入密碼。
第二步:簡單配置叢集
- 為所有結點設定免密登入(百度搜尋“ssh免密登入”)
- 修改所有結點
hostname
:
hostname cdh-m1
並同步修改 /etc/hostname
檔案
- (optional) 為所有結點配置pdsh,方便批量操作。pdsh的基本命令:
pdsh -w cdh-w[1-4] cmd
- (可以放在第四步的間隙來做)配置本地資料盤(格式化,掛載,開啟自動掛載)
點選這裡下載 format.sh
指令碼。
for i in {1..4}; do scp format.sh root@cdh-w$i:/root; done
pdsh -w cdh-w[1-4] bash /root/format.sh
檢查一下是否配置成功(輸出為所有 worker
結點本地盤數量總和,4結點是48):
pdsh -w cdh-w[1-4] df -h | grep "5.1T" | wc -l
其中“5.1T”為資料盤大小,可以根據本地資料盤做修改。
第三步:安裝基礎服務
-
登入到
master
結點,安裝MySQL
:詳細教程點選這裡。對照教程,完成:- 配置
my.cnf
(只需要照著它的推薦配置配就可以了); - 備份
ib_logfile
; - 修改
root
使用者登入密碼; - 新增到開機自啟動;
- 下載
jdbc
; - 建立一些資料庫:在
MySQL
中執行指令碼:create_databases.sql
。點選這裡下載指令碼。
- 配置
- 配置Cloudera源:
下載(點選下載)並將cloudera-manager.repo
檔案拷貝到/etc/yum.repos.d/
- 安裝jdk-1.7:(下載速度較慢,15min)
sudo yum install oracle-j2sdk1.7
第四步:安裝CDH
- 安裝
Cloudera Manager Server Packages
:(下載速度較慢,中途可能失敗,需要反覆重試,利用這個時間空隙,可以完成第二步第4小步)
sudo yum install cloudera-manager-daemons cloudera-manager-server
- 為
Cloudera Manager
配置本地資料庫:
在 MySQL中建立一個服務於 cloudera manager
的資料庫,起名叫 cloudera_manager
(小寫):
create database cloudera_manager DEFAULT CHARACTER SET utf8;
連線到該資料庫:
/usr/share/cmf/schema/scm_prepare_database.sh mysql cloudera_manager root password
- 啟動
Cloudera Manager Server
:
sudo service cloudera-scm-server start
- 在瀏覽器中開啟
http://cdh-m1:7180
,此時無響應,需要做埠對映:詳細教程可以點選這裡瞭解更多。
我的做法:開兩個命令視窗,分別跑兩個程式:
ssh -i id_rsa -ND 7180 root@cdh-m1
其中“7180”是準備對映的埠。
/Applications/Google Chrome.app/Contents/MacOS/Google Chrome --proxy-server="socks5://localhost:7180" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost" --user-data-dir=/tmp/
-
重新整理剛才的頁面:
http://cdh-m1:7180
,使用者名稱和密碼都是admin。按照提示開始安裝過程。由於每臺機器都需要安裝jdk
和cloudera-manager-agent
,這兩個包的下載速度非常慢,過程可能長達數小時。需要提前做好心裡準備(其他準備也做不了)。安裝過程中需要注意幾個問題:- 在主機檢查階段,確保所有專案都checked,如果沒有,按照提示逐一修復;
- 在服務選擇階段,可以自定義服務,根據需要選擇相應的服務,而無需選擇所有服務。也可以直接選擇所有服務,安裝完成後手動停掉不需要的服務,我選擇了所有服務(後來我又把不需要的服務都手工刪掉了,衰);
- 在資料庫連線階段,開啟
create_databases.sql
檔案,並對照填寫相應的內容;如果在上一步中選擇了Hue
和Oozie
服務,那麼這裡需要為這兩個服務配置相應的資料庫,詳細教程見這裡:
Hue
:https://www.cloudera.com/documentation/enterprise/5-13-x/topics/hue_dbs_mysql.html#hue_dbs_mysqlOozie
:https://www.cloudera.com/documentation/enterprise/5-13-x/topics/install_oozie_ext_db.html#admin_oozie_ext_db
如果配置 Oozie
的時候需要JDBC
,那麼建立軟鏈:
ln -s /usr/share/java/mysql-connector-java.jar /opt/cloudera/parcels/CDH/lib/oozie/lib/mysql-connector-java.jar
- 停止或者刪除不需要的服務,並根據
Cloudera Manager
的建議,修復一些其他問題。
第五步:驗證安裝是否成功:
- 登入到
master
結點,以hive
使用者連線到HiveServer2
:
beeline -u "jdbc:hive2://localhost:10000/default" -n hive
- 建立一張叫
table_name
的ORC
事務表:
CREATE TABLE table_name (id int, name string)
CLUSTERED BY (id) INTO 2 BUCKETS
STORED AS ORC
TBLPROPERTIES ("transactional"="true",
"compactor.mapreduce.map.memory.mb"="2048",
"compactorthreshold.hive.compactor.delta.num.threshold"="4",
"compactorthreshold.hive.compactor.delta.pct.threshold"="0.5"
);
- 插入一條記錄並讀取:
insert into table_name(id, name) values(`1`, `Alex`);
select * from table_name;
- 驗證
Hive-on-Spark
是否正常:
set hive.execution.engine=spark;
select count(*) from table_name;
如果輸出的結果為1, 那麼表明安裝正常。
到此為止,我們已經成功在ECS上搭建起了一套大資料系統。
相關文章
- 手把手教你搭建hadoop+hive測試環境(新手向)HadoopHive
- Hadoop 系列(四)—— Hadoop 開發環境搭建Hadoop開發環境
- 《手把手教你》系列基礎篇之(一)-java+ selenium自動化測試-環境搭建(上)(詳細教程)Java
- 1分鐘手把手教你搭建Hyperf+Docker本地開發環境Docker開發環境
- macOS 上搭建Flutter開發環境MacFlutter開發環境
- 大資料叢集搭建 – 1. CDH叢集安裝 – 環境準備大資料
- 搭建Hadoop開發環境Hadoop開發環境
- 手把手教你 在IDEA搭建 SparkSQL的開發環境IdeaSparkSQL開發環境
- Windows下1分鐘手把手教你搭建Hyperf+Docker本地開發環境WindowsDocker開發環境
- 🔥《手把手教你》系列基礎篇之 1-python+ selenium 自動化測試 - 環境搭建(詳細)Python
- PCIE XDMA 開發環境搭建以及環路測試開發環境
- 1 – 搭建開發環境開發環境
- 手把手教你搭建Windows環境微信小程式的本地測試伺服器Windows微信小程式伺服器
- 手把手教你搭建Mac環境微信小程式的本地測試伺服器Mac微信小程式伺服器
- 如何在 docker for win 上搭建 Laravel 開發環境DockerLaravel開發環境
- mac搭建hadoop開發環境(二)MacHadoop開發環境
- 【MIT6.S081/6.828】手把手教你搭建開發環境MIT開發環境
- 如何快速搭建微服務開發測試環境微服務
- RabbitMQ系列(一)在Ubuntu上的環境搭建MQUbuntu
- 手把手教你搭建ffmpeg命令列環境命令列
- Ubuntu上搭建Hadoop叢集環境的步驟UbuntuHadoop
- 雲端開發環境 ,「開發者上雲」新起點開發環境
- EOS開發完全解析(一):Ubuntu上搭建EOS開發環境Ubuntu開發環境
- ubuntu18.04上搭建django專案測試環境UbuntuDjango
- 1.單機部署hadoop測試環境Hadoop
- 大資料學習之--hadoop2.7.3環境搭建大資料Hadoop
- 配置開發環境、生成環境、測試環境開發環境
- 手把手教你搭建OpenDRIVE道路模型(上)模型
- 在 Windows 上搭建 React Native IOS 開發環境WindowsReact NativeiOS開發環境
- Windows上搭建Android開發環境詳細教程WindowsAndroid開發環境
- windows上python3開發環境的搭建WindowsPython開發環境
- 測試開發進階:一文教你從0到1搞懂大資料測試!大資料
- 搭建Hadoop的Eclipse開發環境HadoopEclipse開發環境
- 阿里雲體驗實驗室 教你如何《搭建Hadoop環境》阿里Hadoop
- SOA 環境中的測試驅動的開發,第 1 部分: 測試資料對映
- RabbitMQ系列(一)RabbitMQ在Ubuntu上的環境搭建MQUbuntu
- Linux伺服器上搭建測試環境(war包+tomcat)Linux伺服器Tomcat
- mac上搭建appium+IOS自動化測試環境(一)MacAPPiOS