從零搭建生產Hadoop叢集(三)——CDH叢集搭建
一、概述
繼本系列前兩篇文章講到的離線安裝YUM源搭建及規劃與環境準備,本文開始講述CDH叢集的搭建步驟及注意要點。本文基於CentOS7進行部署,Cloudera Manager版本選擇5.8.1,CDH版本5.8.0。
二、硬體檢查與系統配置
1.硬體檢查
1)檢查記憶體
free -g
2)檢查所有磁碟掛載。將noatime引數寫入/etc/fstab,並remount所有資料盤。
vim /etc/fstab
for i in 1 2 3 4 5;do mount -o remount /opt$i
mount
3)檢查磁碟讀寫
可以用dd或者hdparm命令進行測試,具體步驟可以參考網上的一些做法。
4)檢測網絡卡設定
ethtool [interface]
5)檢測路由
route -n
若路由缺失,使用以下命令新增路由並新增到/etc/rc.local以使重啟生效
route add -net [網段] netmask [掩碼] gw [閘道器] dev [網口]
6)檢查系統版本
檢查系統版本是否為CDH推薦的版本,版本不相容可能會產生穩定性問題
cat /etc/issue
uname -a
2.系統配置
1)配置hostname與/etc/hosts(所有節點)
若在沒有dns服務的內部網路,配置hosts就很有必要了,叢集間所有節點均需配置以相互通訊。
設定hostname
命令列執行:
hostname [name]
設定HOSTNAME以使重啟生效
vim /etc/sysconfig/network
設定/etc/hosts
將叢集所有節點的資訊新增到該檔案中
vim /etc/hosts
2)所有節點安裝SSH(所有節點)
可以選擇CM server到agent通過使用者名稱密碼登入或者是公鑰的方式。若使用使用者名稱的方式,需保證所有伺服器root使用者名稱和密碼一致。
3)安裝Oracle JDK(所有節點)
CentOS自帶Openjdk,不過執行CDH5需要使用Oracle的jdk。至於安裝,可通過web安裝介面指定使用CM Server來進行安裝(安裝yum repo中的配置的Java版本)。
4)關閉防火牆和SELinux(所有節點)
清除iptables
iptables -L
iptables -F
關閉SELinux
/etc/selinux/config 的SELINUX=disabled
5)設定swappiness(所有節點)
命令列執行:
sysctl -w vm.swappiness=0
/etc/sysctl.conf新增以下內容:
vm.swappiness = 0
6)設定ulimit(所有節點)
命令列執行:
ulimit -n 65535
/etc/security/limits.conf新增以下內容:
soft nofile 65535
hard nofile 65535
7)設定ntp服務(所有節點)
使用ntpdate命令與ntp伺服器對時
date
ntpdate [ntpserver]
/etc/ntp.conf新增以下內容:
server [ntpserver]
啟動ntpd
systemctl restart ntpd
檢視是否同步成功
ntpstat
8)設定DNS(所有節點)
若叢集域名解析僅依賴/etc/hosts檔案,建議註釋掉/etc/resolv.conf,以避免不良影響。
9)關閉THP
CDH 5 所支援的大多數 Linux 平臺包含名為透明大頁面壓縮的功能,該功能與 Hadoop 工作負載互動較差,可能會嚴重影響效能,因此建議關閉。命令列執行以下命令,並寫到/etc/rc.local檔案中。
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
三、資料庫安裝與配置
CM支援多種型別資料庫作為配置及監控資料的儲存方式,這裡以mysql為例。CM資料庫、Hue/Oozie配置資料庫、Hive Metastore元資料庫等最好能夠根據實際應用及負載分開部署,並且部署高可用方案(主從或主主互備,後續會有專題講解)。
1.安裝MySql
表配置為Innodb引擎,否則CM啟動可能會遇到問題。
yum install mysql-server
service mysqld start
2.配置CM Server資料庫
用於存放CM的配置與監控資料。
mysqladmin -u root password 'xxxx'
mysql -uroot -p 進入mysql命令列,建立以下資料庫:
create database amon DEFAULT CHARACTER SET utf8;
grant all on amon.* TO 'amon'@'%' IDENTIFIED BY 'xxxx';
create database smon DEFAULT CHARACTER SET utf8;
grant all on smon.* TO 'smon'@'%' IDENTIFIED BY 'xxxx';
create database rman DEFAULT CHARACTER SET utf8;
grant all on rman.* TO 'rman'@'%' IDENTIFIED BY 'xxxx';
create database hmon DEFAULT CHARACTER SET utf8;
grant all on hmon.* TO 'hmon'@'%' IDENTIFIED BY 'xxxx';
create database nav DEFAULT CHARACTER SET utf8;
grant all on nav.* TO 'nav'@'%' IDENTIFIED BY 'xxxx';
flush privileges;
3.配置Hive Metastore資料庫
用於存放Hive的元資料資訊。
create database metastore DEFAULT CHARACTER SET utf8;
grant all on metastore.* TO 'hive'@'%' IDENTIFIED BY 'xxxx';
flush privileges;
注意,安裝Hive的時候可能會報錯,由於使用了MySql作為Hive的元資料儲存,因此需要安裝MySql的驅動:
yum install mysql-connector-java
4.配置Hue/Oozie資料庫
用於存放Hue/Oozie配置資訊。
create database hue DEFAULT CHARACTER SET utf8;
grant all on hue.* TO 'hue'@'%' IDENTIFIED BY 'xxxx';
create database oozie DEFAULT CHARACTER SET utf8;
grant all on oozie.* TO 'oozie'@'%' IDENTIFIED BY 'xxxx';
flush privileges;
四、CM Server/Agent及CDH相關套件安裝
1.下載並執行cloudera-manager-installer
1)下載安裝指令碼
根據所需版本進行下載,本文使用https://www.cloudera.com/downloads/manager/5-8-1.html
2)執行安裝指令碼
該執行程式會指引安裝CM Server,前提是YUM源提前要配置好。在需要安裝CM Server的linux伺服器上,使用root使用者執行以下命令。
chmod u+x cloudera-manager-installer.bin
./cloudera-manager-installer.bin --skip_repo_package=1
根據提示,點選下一步,最後完成安裝後會提示CM的web登陸url及初始使用者名稱密碼,預設是adimin、admin。安裝過程中可能會遇到一些異常,根據提示的日誌檔案資訊解決即可。
3)使用瀏覽器登陸CM Web頁面進行叢集安裝
登陸CM介面後,根據安裝嚮導執行初始化安裝和配置。
(1)選擇要安裝的 Cloudera Manager 版本
選擇免費版、試用版or商業版。
(2)通過主機名和 IP 地址範圍查詢您指定的群集主機
指定需要通過CM管理的伺服器範圍。
(3)使用 SSH 連線至每臺主機以安裝 Cloudera Manager Agent 和其他元件
可以提前將CM Server的公鑰放置與其他伺服器上,或者輸入統一的使用者名稱密碼程序操作。
(4)在群集主機上安裝 Oracle JDK
(5)安裝 CDH 和託管服務軟體包或 parcel
“選擇方法”選項,選擇“使用Parcel(建議)”,並點選右邊按鈕的“更多選項”,設定“遠端Parcel儲存庫URL"為“http://[my-yum-server]/cloudera-parcel/”,若沒有指定本地YUM源,會從網路進行下載,速度就會慢很多;
“選擇CDH的版本”,如果之前已經配好了YUM源,這裡會顯示出相應的CDH parcel安裝包,選擇即可。
點選下一步就會進行parcel包的分發與安裝。這一步主要會進行CM Agent的安裝以及將parcel包分發到各個伺服器。
(6)自動配置 CDH 和託管服務並啟動服務
這一步,主要根據自己的實際需求啟動相關服務,如HDFS/YARN/HBASE/HIVE/ZOOKEEPER等,可以選擇核心套件,或者自定義,不過,一般以上提到的服務都是生產中常用到的,可根據實際調整。
- “叢集設定”的“自定義角色配置”頁面,選擇需要在伺服器上分配對應的角色例項。生產環境中,最好能夠做到資料節點(datanode/nodemanager等)與管理節點(namenode/resourcemanager/hivemetastore/zookeeper等)的分離,由於資料節點經常會執行繁重的任務,可能會影響管理節點的穩定高效執行。
- “叢集設定”的“資料庫設定”頁面,將之前在MySql建的對應庫名、使用者名稱、密碼填入之後,點選連線測試,沒有問題則可進入下一步。
- 一路點選下一步即會對叢集進行初始化,如無意外,可順利啟動叢集。
- 測試叢集執行任務是否正常:hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 10 100
(7)叢集啟動後的優化
- HDFS 啟用NameNode HA。點選“HDFS”服務->“操作”->“啟用High Availability”,選擇兩個NN需要分佈在哪兩個伺服器即可。
- YARN 啟用HA。點選“YARN”服務->“操作”->“啟用High Availability”,選擇兩個RM需要分佈在哪兩個伺服器即可。
- HBase 啟用HA。主要是HMaster在多個伺服器上啟動例項即可。
- Hive啟用HA。Metastore及Hiveserver均需啟用多個例項以提高可用性。
- 根據實際情況需要,啟用kerberos認證,提高安全性,後續進行專題討論。
- 各個服務根據實際使用情況的配置優化,後續進行專題討論。
至此,一個可用的Hadoop機器已經搭建起來了。可通過CM頁面檢視叢集的執行情況,並可通過介面直接操作叢集服務。
歡迎關注我的微信公眾號
相關推薦
從零搭建生產Hadoop叢集(三)——CDH叢集搭建
一、概述 繼本系列前兩篇文章講到的離線安裝YUM源搭建及規劃與環境準備,本文開始講述CDH叢集的搭建步驟及注意要點。本文基於CentOS7進行部署,Cloudera Manager版本選擇5.8.1,CDH版本5.8.0。 二、硬體檢查與系統配置 1.硬體檢查
[Python接口自動化]從零開始學習python自動化(1):環境搭建
help ins cnblogs 文件中 ssi 空格 plugins 變量 mod 第一步:安裝python編譯環境 安裝python編譯環境之前,必須保證已安裝jdk哈,如果為安裝,請參考https://jingyan.baidu.com/article/6dad507
從零開始Vue專案實戰(三)-專案結構
現在在瀏覽器中輸入http://localhost:8083,可以看到初始的“Welcome to Your Vue.js App”頁面了 目錄結構 ├── README.md 專案介紹 ├── index.html 入口頁面 ├── build
從零開始學習PYTHON3講義(三)寫第一個程序
最有 當前 記憶 參考資料 函數調用 情況 分鐘 頁面 容易 《從零開始PYTHON3》第三講 本頁面使用了公式插件,因博客主機過濾無法顯示的表示抱歉,並建議至個人主頁查看原文。 ? 我見過很多初學者,提到編程都有一種恐懼感,起源是感覺編程太難了。其實,難的也不過是
從零開始學Socket:(三)服務端和客戶端簡單通訊
連線上服務端和客戶端之後,我們就要讓他們互動起來了。(到了現在,大家如果對下面程式碼不懂得地方可以去F12跟蹤至原始碼介面檢視,學習就是這樣) 先在服務端編寫傳送函式和接收函式 /// <summary> /// 傳送資料到客戶
從零開始微信機器人(三):表情機器人的製作
本篇的誕生來自於一朋友製作的表情機器人。當時覺得十分有趣,也希望加入到群聊機器人中,因此就向他討要了原始碼並製作了表情功能。在此我也再次感謝吳毅凡同學的協助! 準備工作 由於需要讀取網頁內容,本文中由於我個人偏好使用xpath來選擇網頁中元素,使用了lxml包,安裝的
從零學習遊戲伺服器開發(三) CSBattleMgr服務原始碼研究
如上圖所示,這篇文章我們將介紹CSBattleMgr的情況,但是我們不會去研究這個伺服器的特別細節的東西(這些細節我們將在後面的文章中介紹)。閱讀一個未知的專案原始碼如果我們開始就糾結於各種細節,那麼我們最終會陷入“橫看成嶺側成峰,遠近高低各不同”的尷尬境界,浪費時間不說,可
從零開始實現放置遊戲(三)——實現掛機戰鬥(1)
上一章已經把整體的程式碼框架搭建完畢。然而整個遊戲的功能非常的多,這就要求我們必須思路清晰,把所有功能依次分解開,逐步實現。 需求分析 整個遊戲的核心玩法是放置掛機,打怪練級是核心功能,先實現一個最小可執行的DEMO,那麼可以先實現玩家和怪物掛機戰鬥這部分。像裝備、道具、掉落、隨機詞綴、組隊等功能
從零開始學習音視頻編程技術(三) 開發環境搭建(Qt4.86手動設置環境,主要就是設置g++和qmake,比較透徹,附下載鏈接)
路徑 details 分享 baidu 末尾 是我 其中 找到 source 1.先下載安裝Qt 我們使用的版本是4.8。 可以自行百度下載也可以從下面的網盤地址下載: Qt庫和編譯器下載: 鏈接:http://pan.baidu.com/s/1hrUxLIG 密碼
【webpack系列】從零搭建 webpack4+react 腳手架(三)
本章節,我們對如何在腳手架中引入CSS,如何壓縮CSS,如何使用CSS Modules,如何使用less,如何使用postcss等問題進行展開學習。 1 支援css (1)在app目錄,新建一個css,命名為index.css,輸入樣式: h1{
【完全分散式Hadoop】(三)叢集設定SSH無密碼登陸
之前的文章已經有SSH免密部分,這裡單獨列出來只是為了方便查詢 打通SSH,設定ssh無密碼登陸(所有節點) 組建了三個節點的叢集hadoop000、hadoop001、hadoop002 在所有節點上執行 ssh-keygen -t rsa 一路回車,生成無密碼的金鑰對。 將各個節點的公鑰
從零開始Vue專案實戰(二)-搭建環境
1、下載node.js並安裝 下載地址:https://nodejs.org/en/download/。 下載.msi 格式的直接連續下一步就可以了。安裝完成後可以用 node -v 和 npm -v 檢視版本號。 2、安裝vue-cli 腳手架構建工具 在命令列中輸入npm ins
Solr學習(三)SolrCloud叢集搭建與建立Collection
1、什麼是SolrCloud SolrCloud是Solr提供的分散式搜尋方案,當你需要大規模,容錯,分散式索引和檢索能力時使用 SolrCloud。當一個系統的索引資料量少的時候是不需要使用SolrCloud的,當索引量很大,搜尋請求併發很高,這時需要使用SolrCloud來滿足這些需求。
ElasticSearch教程(三)————ElasticSearch叢集搭建
公司一直在使用ES作為分散式的搜尋引擎,由於資料量的不斷升高,ES出現了效能瓶頸。公司決定進一步的優化ES配置,所以最近幾天在研究ES,最近會更新一系列ES的教程,希望大家持續關注。不多說了,Action。 前言 這篇博文我們親自搭建一個簡單的Elast
從零開始學_JavaScript_系列(41)——物件的擴充套件(4)擴充套件運算子三個點...
0、一句話總結 屬性名,以及是屬性的函式的簡潔寫法,寫起來簡單易閱讀 屬性名可以用變數字串拼接起來(話說以前也有吧?) 函式都有name屬性,但set和get也要加字首 Object.is判斷兩個變數是否相等 Obje
.Net架構設計設計(三)SqlServer叢集搭建
此處配置Windows2008 群集,將用於SQLserver 2008 雙機故障轉移群集,此處SQLserver 的群集基於Windows群集實現。Windows 2008 叢集更容易實現了,只要規劃好IP和磁碟分配,可一直按視窗介面進行配置。 伺服器要求: 本次測試要求3臺伺服器,1臺域控制器(Wind
從零開始實現放置遊戲(二)——框架搭建
上一篇,我們講解了遊戲的大概背景,知道了要做什麼內容。現在已經可以開始搭建遊戲的程式碼框架。 整體架構 我們將整個專案命名為idlewow,目前包含以下幾個模組idlewow-facade, idlewow-core, idlewow-hessianserver, idlewow-rms, idl
從零開始實現放置遊戲(十)——實現戰鬥掛機(1)hessian服務端搭建
前面實現RMS系統時,我們讓其直接訪問底層資料庫。後面我們在idlewow-game模組實現遊戲邏輯時,將不再直接訪問底層資料,而是通過hessian服務暴露介面給表現層。 本章,我們先把hessian服務搭好,並做一個簡單的測試,這裡以使用者註冊介面為例。 先簡單介紹下,實現hessian介
Hadoop 系列(八)—— 基於 ZooKeeper 搭建 Hadoop 高可用叢集
一、高可用簡介 Hadoop 高可用 (High Availability) 分為 HDFS 高可用和 YARN 高可用,兩者的實現基本類似,但 HDFS NameNode 對資料儲存及其一致性的要求比 YARN ResourceManger 高得多,所以它的實現也更加複雜,故下面先進行講解: 1.1 高可用
[Golang] 從零開始寫Socket Server(3): 對長、短連接的處理策略(模擬心跳)
microsoft ted 每次 range 點擊 關閉 ade 而在 href 通過前兩章,我們成功是寫出了一套湊合能用的Server和Client,並在二者之間實現了通過協議交流。這麽一來,一個簡易的socket通訊框架已經初具雛形了,那麽我們接下來做的