大資料hadoop叢集搭建
cpu型号:intel(r) xeon(r) cpu e5-2620 v4 @ 2.10ghz
cpu核數:16
記憶體:64gb
版本:centos linux release 7.5.1804 (core)
主機清單:
ip
主機名
192.168.1.101
node1
192.168.1.102
node2
192.168.1.103
node3
192.168.1.104
node4
192.168.1.105
node5
軟體安裝包路徑:/data/tools/
java_home路徑:/opt/java # java為軟連結,指向jdk的指定版本
hadoop叢集路徑:/data/bigdata/
元件名
安裝包
說明
jdk
jdk-8u162-linux-x64.tar.gz
基礎環境
✔
zookeeper
zookeeper-3.4.12.tar.gz
hadoop
hadoop-2.7.6.tar.gz
spark
spark-2.1.2-bin-hadoop2.7.tgz
scala
scala-2.11.12.tgz
hbase
hbase-1.2.6-bin.tar.gz
hive
apache-hive-2.3.3-bin.tar.gz
kylin
apache-kylin-2.3.1-hbase1x-bin.tar.gz
kafka
kafka_2.11-1.1.0.tgz
hue
hue-3.12.0.tgz
flume
apache-flume-1.8.0-bin.tar.gz
注:所有的軟連結不可以跨伺服器傳輸,應該單獨建立;否則會把軟連結所指向的檔案或整個目錄傳過去;
也可以node1生成一套密鑰,然後把~/.ssh整個目錄分發到其它伺服器,共用一個密鑰
官方文檔
生産環境:兩個主節點隻裝namenode,不裝datanode;
建立指定目錄
建立相應目錄
由于zookeeper沒有提供同時啟動叢集中所有節點的執行腳本,在生産中逐個節點啟動稍微有些麻煩,自定義一個腳本用來啟動叢集中所有節點,如下:
生産中一個hdfs叢集會有兩個resourcemanager節點,若逐個節點啟動稍微有些麻煩,自定義一個腳本用來啟動叢集中所有resourcemanager節點,如下:
\
quorumpeermain
journalnode
namenode
dfszkfailovercontroller
datanode
nodemanager
resourcemanager
在任意一台namenode機器上通過jps指令查找到namenode的程序号,然後通過kill -9的方式殺掉程序,觀察另一個namenode節點是否會從狀态standby變成active狀态。
然後觀察原來是standby狀态的namenode機器的zkfc日志,若最後一行出現如下日志,則表示切換成功:
這時再通過指令啟動被kill掉的namenode程序
對應程序的zkfc最後一行日志如下:
可以在兩台namenode機器之間來回kill掉namenode程序以檢查hdfs的ha配置!
scala運作在jvm虛拟機,需要配置jdk;
如果以上兩步沒問題,表示scala已安裝和配置成功。
說明:<code>spark.executorenv.pythonhashseed=0</code>配置:
如果你使用的是python3+,并且在spark叢集上使用distinct(),reducebykey(),和join()這幾個函數時,就會觸發下面的異常:
python建立周遊對象對象時會對每個對象進行随機哈希建立索引。然而在一個叢集上,每個節點計算時對某一個變量建立的索引值不同,會導緻資料索引沖突。是以需要設定pythonhashseed來固定随機種子,保證索引一緻。參見:
spark叢集配置(4):其他填坑雜項
master
worker
historyserver
master和hadoop的namenode程序運作在同一台主機上,與datanode通信
以讀寫hdfs的資料。regionserver跟hadoop的datanode運作在同一台主機上。
參考:
hbase 資料庫簡介安裝與常用指令的使用
hmaster
hregionserver
hbase web頁面http://192.168.1.101:16030
hbase master url:http://192.168.1.101:60010
kafka實戰最佳經驗
kafka并沒有提供同時啟動叢集中所有節點的執行腳本,在生産中一個kafka叢集往往會有多個節點,若逐個節點啟動稍微有些麻煩,自定義一個腳本用來啟動叢集中所有節點,如下:
建立主題:(指明要連接配接的zookeeper)例如主題名稱為:testtopic
檢視主題:
任選一台,建立生産者:(kafka叢集使用者)
另一台,建立消費者
生産者輸入一些資料,看消費者是否顯示生産者所輸入的資料。
kafka也同樣沒有提供關閉叢集操作的腳本。這裡我提供一個用來關閉kafka叢集的腳本(可以放在任意一條節點上):
參考:https://blog.51cto.com/moerjinrong/2092614
注意:由于html格式問題,上面jdbc的url中的&改為照片中紅色下劃線的符号
runjar
# 啟動hive時才有
安裝kylin前確定:hadoop 2.4+、hbase 0.13+、hive 0.98+,1.*已經安裝并啟動。
hive需要啟動metastore和hiveserver2。
apache kylin同樣可以使用叢集部署,但使用叢集部署并不能增加計算速度
因為計算過程使用mapreduce引擎,與kylin自身無關,而是主要為查詢提供負載均衡。本次采用單節點。
将hive安裝目錄lib目錄中的所有jar包複制到kylin安裝目錄下的lib目錄中。
如果不關閉,會報如下錯誤
進入bin目錄下分别執行
在kylin安裝根目錄下執行
到目前為止所啟動的程序:
# kylin程序
服務啟動後,浏覽器通路位址:http://ip:7070/kylin/
使用者名:admin
密碼:kylin
1.配置資料源
(1)依次選擇 model -> data source -> load hive table
(2)輸入 hive 中資料庫的表名格式為: 資料庫名.資料表名
如:db_hivetest.student ,然後點選sync即可。
添加成功後,效果如下圖:
1、界面無法同步hive表中繼資料
解決方法,在kylin安裝目錄下:
執行指令:<code>vim ./bin/kylin.sh</code> 需要對此腳本做以下修改:
可以看到一個leader,其它為follower就可以*
沒有啟動的去相應伺服器下單獨啟動