1. 程式人生 > >從零搭建生產Hadoop叢集(三)——CDH叢集搭建

從零搭建生產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等,可以選擇核心套件,或者自定義,不過,一般以上提到的服務都是生產中常用到的,可根據實際調整。

  1. “叢集設定”的“自定義角色配置”頁面,選擇需要在伺服器上分配對應的角色例項。生產環境中,最好能夠做到資料節點(datanode/nodemanager等)與管理節點(namenode/resourcemanager/hivemetastore/zookeeper等)的分離,由於資料節點經常會執行繁重的任務,可能會影響管理節點的穩定高效執行。
  2. “叢集設定”的“資料庫設定”頁面,將之前在MySql建的對應庫名、使用者名稱、密碼填入之後,點選連線測試,沒有問題則可進入下一步。
  3. 一路點選下一步即會對叢集進行初始化,如無意外,可順利啟動叢集。
  4. 測試叢集執行任務是否正常:hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 10 100

(7)叢集啟動後的優化

  1. HDFS 啟用NameNode HA。點選“HDFS”服務->“操作”->“啟用High Availability”,選擇兩個NN需要分佈在哪兩個伺服器即可。
  2. YARN 啟用HA。點選“YARN”服務->“操作”->“啟用High Availability”,選擇兩個RM需要分佈在哪兩個伺服器即可。
  3. HBase 啟用HA。主要是HMaster在多個伺服器上啟動例項即可。
  4. Hive啟用HA。Metastore及Hiveserver均需啟用多個例項以提高可用性。
  5. 根據實際情況需要,啟用kerberos認證,提高安全性,後續進行專題討論。
  6. 各個服務根據實際使用情況的配置優化,後續進行專題討論。
    至此,一個可用的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

開始實現放置遊戲——實現戰鬥掛機1hessian服務端搭建

  前面實現RMS系統時,我們讓其直接訪問底層資料庫。後面我們在idlewow-game模組實現遊戲邏輯時,將不再直接訪問底層資料,而是通過hessian服務暴露介面給表現層。   本章,我們先把hessian服務搭好,並做一個簡單的測試,這裡以使用者註冊介面為例。   先簡單介紹下,實現hessian介

Hadoop 系列—— 基於 ZooKeeper 搭建 Hadoop 高可用叢集

一、高可用簡介 Hadoop 高可用 (High Availability) 分為 HDFS 高可用和 YARN 高可用,兩者的實現基本類似,但 HDFS NameNode 對資料儲存及其一致性的要求比 YARN ResourceManger 高得多,所以它的實現也更加複雜,故下面先進行講解: 1.1 高可用

[Golang] 開始寫Socket Server3: 對長、短連接的處理策略模擬心跳

microsoft ted 每次 range 點擊 關閉 ade 而在 href 通過前兩章,我們成功是寫出了一套湊合能用的Server和Client,並在二者之間實現了通過協議交流。這麽一來,一個簡易的socket通訊框架已經初具雛形了,那麽我們接下來做的