主頁 > 資料庫 > 阿里云ECS服務器部署HADOOP集群(二):HBase完全分布式集群搭建(使用外置ZooKeeper)

阿里云ECS服務器部署HADOOP集群(二):HBase完全分布式集群搭建(使用外置ZooKeeper)

2020-09-15 04:29:32 資料庫

本篇將在阿里云ECS服務器部署HADOOP集群(一):Hadoop完全分布式集群環境搭建的基礎上搭建,多添加了一個 datanode 節點 ,

 

1 節點環境介紹:

1.1 環境介紹:

  • 服務器:三臺阿里云ECS服務器:master, slave1, slave2
  • 作業系統:CentOS 7.3
  • Hadoop:hadoop-2.7.3.tar.gz
  • Java: jdk-8u77-linux-x64.tar.gz
  • HBase: hbase-1.2.6-bin.tar.gz
  • ZooKeeper: zookeeper-3.4.14.tar.gz

1.2 各節點角色分配

  • master: NameNode、SecondaryNameNode、HMaster、QuorumPeerMain
  • slave1: DataNode、HMaster(候補節點)、HRegionServer、QuorumPeerMain
  • slave2: DataNode、HRegionServer、QuorumPeerMain

2 HBase 下載

下載 hbase-1.2.6-bin.tar.gz 并在合適的位置解壓縮,筆者這里解壓縮的路徑為:

/usr/local

將解壓得到的目錄改名為 hbase 

1 cd /usr/local
2 mv hbase-1.2.6/ hbase/

3 添加 HBase 環境變數

在"/etc/profile"中添加內容:

1 export HBASE_HOME=/usr/local/hbase
2 export PATH=$PATH:$HBASE_HOME/bin

重新加載環境:

source /etc/profile

4 修改 HBase 配置資訊

4.1 修改 hbase 環境變數 (hbase-env.sh)

編輯檔案:

vim $HBASE_HOME/conf/hbase-env.sh

添加內容:

1 export JAVA_HOME=/usr/local/jdk1.8
2 export HBASE_CLASSPATH=/usr/local/hadoop/etc/hadoop3 export HBASE_MANAGES_ZK=false

關于 HBASE_CLASSPATH , 官方檔案解釋如下:Of note, if you have made HDFS client configuration changes on your Hadoop cluster, such as configuration directives for HDFS clients, as opposed to server-side configurations, you must use one of the following methods to enable HBase to see and use these configuration changes:

  • Add a pointer to your HADOOP_CONF_DIR to the HBASE_CLASSPATH environment variable in hbase-env.sh.
  • Add a copy of hdfs-site.xml (or hadoop-site.xml) or, better, symlinks, under ${HBASE_HOME}/conf, or 
  • if only a small set of HDFS client configurations, add them to hbase-site.xml.

An example of such an HDFS client configuration is dfs.replication. If for example, you want to run with a replication factor of 5, HBase will create files with the default of 3 unless you do the above to make the configuration available to HBase.

HBASE_MANAGES_ZK 設定是否使用內置 ZooKeeper ,默認為 true 也就是使用內置 ZooKeeper 筆者這里使用外置 ZooKeeper ,(生產環境建議使用外置ZooKeeper,維護起來比較方便,可參考到底要不要用hbase自帶的zookeeper)

4.2 修改 hbase 默認配置(hbase-site.xml)

編輯檔案:

vim $HBASE_HOME/conf/hbase-site.xml

配置可參考如下代碼:

 1 <configuration>
 2   <!--HBase 的資料保存在 HDFS 對應的目錄下-->
 3   <property>
 4     <name>hbase.rootdir</name>
 5     <value>hdfs://master:9000/hbase</value>
 6   </property>
 7   <!--是否分布式環境-->  
 8   <property>
 9     <name>hbase.cluster.distributed</name>
10     <value>true</value>
11   </property>
12   <!--配置 ZK 的地址, 三個節點都啟用 ZooKeeper-->
13   <property>
14     <name>hbase.zookeeper.quorum</name>
15     <value>master,slave1,slave2</value>
16   </property>
17   <!--內置 ZooKeeper 的資料目錄-->  
18   <property>
19     <name>hbase.zookeeper.property.dataDir</name>
20     <value>/usr/local/hbase/zookeeper</value>
21   </property>
22 </configuration>

4.3 指定 regionservers (regionservers)

編輯檔案:

vim $HBASE_HOME/conf/regionservers

添加內容:

1 slave1
2 slave2

4.4 指定候補節點(backup-masters)

這個檔案需要自己創建,

編輯檔案:

vim $HBASE_HOME/conf/backup-masters

添加內容:

slave1

為了保證HBase集群的高可靠性,HBase支持多Backup Master 設定,當Active Master掛掉后,Backup Master可以自動接管整個HBase的集群,

5 分發 hbase 和 profile 給 slave1,slave2(建議將 hbase 壓縮后分發)

1 scp -r /usr/local/hbase slave1:/usr/local
2 scp -r /usr/local/hbase slave2:/usr/local
1 scp /etc/profile slave1:/etc/
2 scp /etc/profile slave2:/etc/

分發后分別在各節點重新加載環境并測驗,可使用 hbase version 測驗,

6 安裝 ZooKeeper

參考 阿里云ECS服務器部署HADOOP集群(三):ZooKeeper 完全分布式集群搭建

7 開放相關埠(坑!!!!!!

注:服務器埠全部開放的可以直接跳過這一步,不想看筆者BB的也可以直接跳到該小結的最后,

 

可能是由于計算機網路沒學好,從搭建Hadoop開始大半的時間都被浪費到這個埠問題上,各種 Error 全都是因為這個問題,??????

至此發誓一定要認真重新學習一遍計算機網路!!!

回到正題:阿里云服務器默認只開放三個埠,如下

所以Hadoop集群搭建的各種所需埠都需要自己手動開放,

看到一些例如一些廢棄的埠如 yarn 的 web ui 舊埠 8088 會被黑客用來挖礦的關于埠開放安全性的問題,筆者嘗試一個個的參照組態檔一個個的添加埠,結果遇到各種問題,例如 

  • web UI 打不開
  • web UI 顯示內容有問題
  • 各節點的通訊問題
  • hbase 報錯

起初在 Hadoop 配置的時候還好,問題還比較容易發現,但是隨著從底層的向上延伸到了 Hadoop 的組件問題就變的很神秘了, 例如在 hbase 中遇到的

  • ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master is initializing;
  • ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet;
  • master.ServerManager: Waiting for region servers count to settle;
  • The Load Balancer is not enabled which will eventually cause performance degradation in HBase as Regions will not be distributed across all RegionServers. The balancer is only expected to be disabled during rolling upgrade scenarios.
  • zookeeper.ClientCnxn: Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect

    java.net.SocketException: Network is unreachable;

  • Caused by: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.exceptions.OutOfOrderScannerNextException): org.apache.hadoop.hbase.exceptions.OutOfOrderScannerNextException: Expected nextCallSeq: 1 But the nextCallSeq got from client: 0; request=scanner_id: 5643550422109494702 number_of_rows: 100 close_scanner: false next_call_seq: 0

  •  

    master.SplitLogManager: finished splitting (more than or equal to) 0 bytes 

  • hbase:meta,,1.1588230740 state=PENDING_OPEN, ts=Tue Nov 24 08:26:45 UTC 2015 (1098s ago), server=amb2.service.consul,16020,1448353564099

  • 17/11/12 22:44:10 INFO hdfs.DFSClient: Exception in createBlockOutputStream
    java.io.IOException: Bad connect ack with firstBadLink as 192.168.0.101:50010
    at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.createBlockOutputStream(DFSOutputStream.java:1456)
    at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.nextBlockOutputStream(DFSOutputStream.java:1357)
    at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:587)

注:這次沒有記錄Error所以以上都是從瀏覽器歷史記錄中找到的,有些不完整的用網上的相似的Error替代了,

這些問題在網上找到的所有解決方法大致歸結為以下幾點:

  • 關閉防火墻
  • 禁用 selinux
  • 退出 hdfs 安全模式
  • 配置時間同步
  • hosts 檔案的各節點 IP 內外網配置
  • 重新格式化 hdfs 
  • 修復 hbase
  • 存在節點未啟動或非正常關閉

但是:

  • 阿里云服務器防火墻默認是關閉的
  • 阿里云服務器 selinux 默認是禁用的
  • hdfs 并沒有處在安全模式
  • 阿里云服務器時間自動同步
  • IP 內外網配置在 阿里云ECS服務器部署HADOOP集群(一):Hadoop完全分布式集群環境搭建 已經配置好
  • hdfs 刪掉了 tmp 重新格式化試了沒用
  • 修復了 hbase 沒用
  • 節點均正常啟動并且沒有例外關閉

所以試了這么多方法我的這么多Error一個都沒解決,,,

認真看了官方檔案嘗試了各種配置甚至嘗試了各個版本的hbase,在老師的開導下先換了HMaster的放置的節點失敗了,嘗試偽分布式也失敗,但這時的 Error 已經不像剛開始的又少又難懂,網上匹配的結果也很少,范圍越來越小,Error越來越明顯了,然后就發現了原來是 hdfs 之間的連接問題,但是因為菜還不太明確問題,所以便嘗試將 hdfs 設定成偽分布式,終于成功了!然后又嘗試配置兩個節點的 hdfs 集群,這時終于從 log 中確定了問題所在,原來是節點的 50010 50020 埠沒開放,導致節點間無法通訊,于是一氣之下打開了服務器的所有埠,重新配置了一遍便成功了,

總結:log 一定要認真仔細查看并去理解,如果遇到報錯很少并且各種方法都無效的情況時,應該嘗試更換思路,比如簡單化當前的配置,縮小范圍,獲得一些新的、更多的Error,絕對不能放棄,只要是個錯誤,就一定可以得到解決,除非它本身就是個Error,,,學會變換不同的思路去解決問題,方法肯定嘗試不完~

所以對于埠問題有兩種解決辦法:

  • 根據官方檔案將默認配置需要的埠一個個的開放,
  • 直接 1/65535, 將所有埠開放,可能會出現安全問題,

8 啟動使用外置 ZooKeeper 的 HBase

8.1 啟動各組件

啟動順序:hdfs-->zookeeper-->hbase

1 # master
2 start-dfs.sh
3 zkServer.sh start
4 # slave1, slave2
5 zkServer.sh start
6 # master 
7 start-base.sh

8.2 檢查各節點的所有行程是否已啟動

[root@master ~]# jps
17136 HMaster
14532 QuorumPeerMain
16885 SecondaryNameNode
16695 NameNode
17324 Jps
[root@slave1 ~]# jps
11138 HRegionServer
11475 Jps
9479 QuorumPeerMain
11015 DataNode
11225 HMaster
[root@slave2 ~]# jps
5923 DataNode
6216 Jps
5288 QuorumPeerMain
6040 HRegionServer

9 訪問HBase

9.1 通過 HBase Shell 訪問

進入 hbase shell

hbase shell

在 hbase shell 中輸入 list 結果如下

hbase(main):001:0> list
TABLE
0 row(s) in 0.3050 seconds

=> []

9.2 通過 Web 訪問

打開網頁 http://master:16010(IP根據實際情況修改),可以看到如下頁面:

10 搭建完成

至此,基于阿里云三臺服務器的HBASE完全分布式集群搭建就完成了!

 

阿里云ECS服務器部署HADOOP集群系列:

  • 阿里云ECS服務器部署HADOOP集群(一):Hadoop完全分布式集群環境搭建
  • 阿里云ECS服務器部署HADOOP集群(三):ZooKeeper 完全分布式集群搭建
  • 阿里云ECS服務器部署HADOOP集群(四):Hive本地模式的安裝
  • 阿里云ECS服務器部署HADOOP集群(五):Pig 安裝
  • 阿里云ECS服務器部署HADOOP集群(六):Flume 安裝
  • 阿里云ECS服務器部署HADOOP集群(七):Sqoop 安裝

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/42162.html

標籤:大數據

上一篇:阿里云ECS服務器部署HADOOP集群(三):ZooKeeper 完全分布式集群搭建

下一篇:阿里云ECS服務器部署HADOOP集群(七):Sqoop 安裝

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more