hbase偽集群搭建
阿新 • • 發佈:2018-03-05
hbase偽集群hbase 數據存儲有三種跑法,跑在本地磁盤上、跑在偽分布式上、跑在完全分布式上--------
額。。。官網的文檔挺坑爹的,結合官網、百度、谷歌的各種文檔看,只要理解原理,搭建也不算難(當然照的官網文檔個看就比較坑爹了)
單機模式 ------->> 這個最簡單,免寫了,下了包直接解壓配置個路徑就可以啟動了,zk 和 hbase 都是起在同一個 jvm 中的,數據落到本地磁盤。
偽分布式部署方式 ------->> 先部署 hdfs , 再部署 hbase ,它們的各個進程跑在不同的 jvm 中 , hbase只是將數據落到了 hdfs 上。
完全分布式 ------->> 完全分布式用大白話來說,我理解的就是個 偽分布式的 升級款,只是把偽分布式的一臺服務器變成了 n 臺。。。
額。。。官網的文檔挺坑爹的,結合官網、百度、谷歌的各種文檔看,只要理解原理,搭建也不算難(當然照的官網文檔個看就比較坑爹了)
單機模式 ------->> 這個最簡單,免寫了,下了包直接解壓配置個路徑就可以啟動了,zk 和 hbase 都是起在同一個 jvm 中的,數據落到本地磁盤。
偽分布式部署方式 ------->> 先部署 hdfs , 再部署 hbase ,它們的各個進程跑在不同的 jvm 中 , hbase只是將數據落到了 hdfs 上。
完全分布式 ------->> 完全分布式用大白話來說,我理解的就是個 偽分布式的 升級款,只是把偽分布式的一臺服務器變成了 n 臺。。。
完全分布式一定要部署在 物理機上
上邊蛋扯的差不多了,下面直接入正題,開始部署
下載什麽版本的包自己解決,要想下載最輕松的全部安裝包,直接到 cdh 上去下載,百度搜索 cdh ,你懂的、、、然後配置文件每個版本的基本上差不多,沒有太大的出入
下面是以 hadoop-2.7.2 、 hbase-1.1.2 為例
一、新系統的話,自己先處理一下系統,這個習慣相信所有運維同行的哥哥們都是有這習慣的。。。關閉不用的防火墻、最大文件打開數、jdk全局變量、dns、主機名解析
建議配置時用 ip 的最後用內網的域名,這樣的話,開發的代碼也好接入做好的 hbase,用主機名的話,開發的還得自己的 hosts ,我這裏用的 內網的 dns 域名。
二、部署 hdfs
hadoop-2.7.2.tar.gz 包傳到 服務器上,解壓 tar xvf hadoop-2.7.2.tar.gz -C /home cd /home/hadoop-2.7.2 vim etc/hadoop/hadoop-env.sh export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_72 配置HDFS mkdir data vim etc/hadoop/core-site.xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://pretend.hdfs.gag.cn:9000</value> <!--這裏設置 hdfs 文件系統接口--> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop-2.7.2/data/tmp</value> <!--這裏為 hdfs 數據存儲路徑--> </property> </configuration> ---------------------------- vim etc/hadoop/hdfs-site.xml <configuration> <property> <name>dfs.replication</name> <value>1</value> <!--指定創建的副本數--> </property> </configuration> ---------------------------- 配置YARN 這原配置文件裏什麽也沒有,都是註釋內容,直接改名就行 mv etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml vim etc/hadoop/mapred-site.xml <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> <!--使用yarn運行mapreduce程序--> </property> </configuration> vim etc/hadoop/yarn-site.xml <configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> <!--NodeManager上運行的附屬服務。需配置成mapreduce_shuffle,才可運行MapReduce程序--> </property> </configuration> ------------------------------------ 啟動 hdfs 初次啟動 hdfs 先要初始化文件系統,也可以說是格式化文件系統 bin/hdfs namenode -format ![](http://i2.51cto.com/images/blog/201803/05/afb7e0d1a567cae57e0219508b614a64.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) 格式化完畢,啟動NameNod和DataNode進程 啟動之前如果修改 jvm 參數的話,在 vim etc/hadoop/hadoop-env.sh 修改 HADOOP_HEAPSIZE 這一項就可以了,默認應該是 1024M 吧 sbin/start-dfs.sh 啟動以後,有這裏顯示有 三個配置文件,是 out 後綴的,看日誌的話,看 log 後綴的,看有沒有 error 級別的報錯 ![](http://i2.51cto.com/images/blog/201803/05/b1fb3c375924ba49aa3cabbee725af10.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) ----------------------------- 啟動YARN sbin/start-yarn.sh 同樣是去看這兩個的 log 後綴的日誌 這裏了 hdfs 就算啟動完畢了,這時再 jps 命令可以看到除 jps 進程外有 5 個 ![](http://i2.51cto.com/images/blog/201803/05/36625774e3955f1fd3014eb85036cadd.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) 查看端口已經有這麽多了, 50070 是 hdfs 的 web 端口,以後輸入 ip:port 或者 域名:port 來查看 web 頁面 ![](http://i2.51cto.com/images/blog/201803/05/f63bcacf66e6c9eafed5fc72fd97d2e7.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) ![](http://i2.51cto.com/images/blog/201803/05/eda0a0aca56cfe831f9ecfe0f061696e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) ====================================================================== 以上 hdfs 啟動沒問題後,就可以啟動 hbase 了 tar xvf hbase-1.1.2-bin.tar.gz -C /home/ cd /home/hbase-1.1.2/ vim conf/hbase-env.sh export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_72 配置Hbase mkdir data vim conf/hbase-site.xml <configuration> <property> <name>hbase.rootdir</name> <value>hdfs://pretend.hdfs.gag.cn:9000/hbase</value> <!--使用 hdfs 文件系統,端口為上面配置的 hdfs 接口--> </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/home/hbase-1.1.2/data</value> <!--zookeeper數據存儲路徑,用hbase自帶的zookeeper--> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> <!--設置hbase模式為集群模式--> </property> </configuration> hbase 集群內的服務器,如果是啟動完全分布式,這裏要填寫hbase所有的服務器域名或者 ip 或者 主機名,順便說一下,hbase和 hadoop 集群全部是已 ssh 遠程 調用命令的方式啟動其他節點的 vim conf/regionservers pretend.hbase.gag.cn 這裏的話,我把內存調整了一下,因為開發那邊要用,服務器是 8G 的 vim conf/hbase-env.sh export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=1024m -XX:MaxPermSize=512m" export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=1024m -XX:MaxPermSize=512m"
啟動Hbase
先啟動 zookeeper,如果是完全分布式的話,所有的 hbase節點會以臨時節點的方式註冊在 zk 裏,偽分布式也一樣,只不過zk 裏只有一個節點,zk 也只有一個節點
bin/hbase-daemon.sh start zookeeper 啟動後查看日誌
bin/hbase-daemon.sh start master 啟動後查看日誌
bin/hbase-daemon.sh start regionserver 啟動後查看日誌
此時的 jps 可以查看到除 jps 外 8 個進程
![](http://i2.51cto.com/images/blog/201803/05/692fd3b3f0fddc59044ac10c47b52adb.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
hbase 的 web 頁面端口是 16010
![](http://i2.51cto.com/images/blog/201803/05/13f8e5501414a49cf0165f36cad233e3.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
如果要加 開機啟動的話,最好加上sleep等待,我是這樣加的
![](http://i2.51cto.com/images/blog/201803/05/d72489bbf28360c894972e2b46a048aa.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
正常停止方式:
一定要按照順序停止
停止 hbase、zookeeper、hdfs
hbase偽集群搭建