快速搭建hadoop+hbase分佈式集羣

hadoop集羣部署

1. 準備三臺機器,如`10.8.177.23`,`10.8.177.24`,`10.8.177.25`javascript

2. 修改主機名稱,配置`hosts`文件(root用戶下操做):java

Shell代碼node

 收藏代碼

  1. # 每臺機器執行,我這裏hd開頭,後邊的數字與機器ip的最後一個組一致  
  2. hostnamectl set-hostname hd-23   
  3. hostnamectl set-hostname hd-23 --static  
  4.   
  5. # 修改hosts文件,  
  6. vi /etc/hosts  
  7. #加入路由配置  
  8. 10.8.177.23 hd-23  
  9. 10.8.177.24 hd-24  
  10. 10.8.177.25 hd-25  

 

3. 每臺機器上建立一個用戶,如hadoop:linux

Shell代碼web

 收藏代碼

  1. useradd -d /home/hadoop -m hadoop  
  2. # 最好建立一個用戶,不要直接使用root進行操做  

 4. 設置免密登陸(==hadoop用戶,下同==)docker

> 只須要設置master對於其餘兩臺機器進行免密登陸便可apache

Shell代碼centos

 收藏代碼

  1. # 一、 在Master機器上的主目錄中生成ssh公鑰  
  2. ssh-keygen -t rsa   
  3. # 二、 在其他機器上主目錄中建立.ssh目錄(執行上邊的命令也能夠)  
  4. # 三、 將Master的公鑰發送給其他兩臺服務器(須要輸入免密)  
  5. scp id_rsa.pub hadoop@hd-24:/home/hadoop/.ssh/id_rsa.pub.23  
  6. scp id_rsa.pub hadoop@hd-25:/home/hadoop/.ssh/id_rsa.pub.23  
  7. # 四、 在.shh中建立authorized_keys文件,並受權  
  8. touch authorized_keys  
  9. chmod 644 authorized_keys  
  10. # 五、 將Master的公鑰加入到受權文件中  
  11. echo id_rsa.pub.23 >> authorized_keys  
  12. # 以上,便可從23無密訪問24,25,可使用如下命令測試:  
  13. ssh hd-24  

 5. 下載jdk、hadoop、hbase、zookeeper瀏覽器

Shell代碼bash

 收藏代碼

  1. > - jdk(也能夠自行下載):`wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u91-b14/jdk-8u91-linux-x64.tar.gz`  
  2. > - zookeeper-3.4.8.tar.gz: `wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz`  
  3. > - hbase-1.2.2-bin.tar.gz:`wget http://mirrors.hust.edu.cn/apache/hbase/1.2.2/hbase-1.2.2-bin.tar.gz`  
  4. > - hadoop-2.7.2.tar.gz:`wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz`  

 6. 解壓以上文件

7. 配置環境變量

Shell代碼

 收藏代碼

  1. vi ~/.bashrc  
  2. JAVA_HOME=/home/hadoop/jdk1.8.0_77  
  3. JRE_HOME=$JAVA_HOME/jre  
  4. CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar  
  5.   
  6. HADOOP_HOME=/home/hadoop/hadoop-2.7.2  
  7. HBASE_HOME=/home/hadoop/hbase-1.2.2  
  8. PATH=.:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HBASE_HOME/bin:$HBASE_HOME/sbin  
  9. expor JAVA_HOME JRE_HOME CLASSPATH HADOOP_HOME HBASE_HOME  
  10. # 配置完成之後進行編譯生效  
  11. source .bashrc  
  12.   
  13. #發送給其他機器  
  14. scp .bashrc hadoop@hd-24:/home/hadoop/  

 8. 配置hadoop

hadoop的配置文件位於`hadoop-2.7.2/etc/hadoop`下,須要配置`core-site.xml`,`hdfs- site.xml`,`yran-site.xml`,`mapred-site.xml`,`hadoop-env.sh`,`slaves`

 core-site.xml

Java代碼

 收藏代碼

  1. <configuration>  
  2.  <property>  
  3.   <name>fs.defaultFS</name>  
  4.   <value>hdfs://hd-23:6000</value>  
  5.   <final>true</final>  
  6.  </property>  
  7.   
  8.  <property>  
  9.   <name>hadoop.tmp.dir</name>  
  10.   <value>/home/hadoop/configsets/hadoop_tmp</value>  
  11.  </property>  
  12.   
  13.  <property>  
  14.   <name>fs.checkpoint.period</name>  
  15.   <value>3600</value>  
  16.  </property>  
  17.    
  18.  <property>  
  19.   <name>fs.checkpoint.size</name>  
  20.   <value>67108864</value>  
  21.  </property>  
  22.   
  23. </configuration>  

 hdfs-site.xml 

Xml代碼

 收藏代碼

  1. <configuration>  
  2.  <property>  
  3.   <name>dfs.namenode.name.dir</name>  
  4.   <value>/home/hadoop/configsets/metadata</value>  
  5.  </property>  
  6.    
  7.  <property>  
  8.   <name>dfs.http.address</name>  
  9.   <value>hd-23:50070</value>  
  10.  </property>  
  11.   
  12.  <property>  
  13.   <name>dfs.namenode.secondary.http-address</name>  
  14.   <value>hd-23:50090</value>  
  15.  </property>  
  16.   
  17.  <property>  
  18.   <name>dfs.datanode.data.dir</name>  
  19.   <value>/home/hadoop/configsets/data</value>  
  20.  </property>  
  21.   
  22.  <property>  
  23.   <name>dfs.replication</name>  
  24.   <value>2</value>  
  25.  </property>  
  26. </configuration>  

  yarn-site.xml

Xml代碼

 收藏代碼

  1. <configuration>  
  2.   
  3.  <property>  
  4.   <name>yarn.resourcemanager.hostname</name>  
  5.   <value>hd-23</value>  
  6.  </property>  
  7.   
  8.  <property>  
  9.   <name>yarn.resourcemanager.aux-services</name>  
  10.   <value>mapreduce_shuffle</value>  
  11.  </property>  
  12.   
  13.  <property>  
  14.   <name>yarn.log.dir</name>  
  15.   <value>/home/hadoop/configsets/yarn_log</value>  
  16.  </property>  
  17. </configuration>  

 mapred-site.xml,這個文件若是不存在的話`cp mapred-site.xml.template mapred-site.xml`一個

Xml代碼

 收藏代碼

  1. <configuration>  
  2.  <property>  
  3.   <name>mapreduce.framework.name</name>  
  4.   <value>yarn</value>  
  5.  </property>  
  6.   
  7.  <property>  
  8.   <name>mapreduce.cluster.temp.dir</name>  
  9.   <value>/home/hadoop/configsets/mr_tmp</value>  
  10.   <final>true</final>  
  11.  </property>  
  12.   
  13.  <property>  
  14.   <name>mapreduce.jobhistory.address</name>  
  15.   <value>hd-23:6002</value>  
  16.  </property>  
  17.   
  18.  <property>  
  19.   <name>mapreduce.jobhistory.webapp.address</name>  
  20.   <value>hd-23:6003</value>  
  21.  </property>  
  22. </configuration>  

 hadoop-env.sh 將JAVA_HOME配置進去

Shell代碼

 收藏代碼

  1. #將下邊這句話註釋了,很差用,但按理說應該能用,結果就是很差用  
  2. #export JAVA_HOME=${JAVA_HOME}  
  3. export JAVA_HOME=/home/hadoop/jdk1.8.0_77  
  4. ```  

 slaves 文件中加入25,24

Java代碼

 收藏代碼

  1. hd-24  
  2. hd-25  

 9. 打包發送至其餘機器

jdk、hadoop、hbase、zookeeper均可以採用這種方式配置後,進行發送,zookeeper稍有不一樣(詳見後文)

Shell代碼

 收藏代碼

  1. tar cf hadoop-2.7.2.tar hadoop-2.7.2  
  2. scp hadoop-2.7.2.tar hadoop@hd-24:/home/hadoop  
  3. scp hadoop-2.7.2.tar hadoop@hd-25:/home/hadoop  
  4. ssh hd-24   
  5. tar xf hadoop-2.7.2.tar  
  6. exit  
  7. ssh hd-25  
  8. tar xf hadoop-2.7.2.tar  
  9. exit  

 10. 格式化名稱節點

Shell代碼

 收藏代碼

  1. hadoop namenode -farmat  

 11. 啓停hadoop集羣

Java代碼

 收藏代碼

  1. # 啓動  
  2. start-all.sh   
  3.   
  4. #中止   
  5. stop-all.sh  

 12. jsp查看

Java代碼

 收藏代碼

  1. [hadoop@hd-23 ~]$ jps  
  2. 12304 QuorumPeerMain  
  3. 16208 ResourceManager  
  4. 24322 Jps  
  5. 15843 NameNode  
  6. 16042 SecondaryNameNode  
  7.   
  8. [root@hd-24 home]# jps  
  9. 12082 QuorumPeerMain  
  10. 15116 Jps  
  11. 12924 DataNode  
  12. 13036 NodeManager  
  13.   
  14. [hadoop@hd-25 ~]$ jps  
  15. 20130 DataNode  
  16. 20242 NodeManager  
  17. 19317 QuorumPeerMain  
  18. 21755 Jps  

 13. 瀏覽器查看

Java代碼

 收藏代碼

  1. http://hd-23:50070/  
  2. http://hd-23:8088/  

 

zookeeper集羣部署

1. 配置,配置文件位於`/home/hadoop/zookeeper-3.4.8/conf`

 

Shell代碼

 收藏代碼

  1. cp zoo_sample.cfg zoo.cfg  
  2. vi zoo.cfg  
  3. tickTime=2000  
  4. initLimit=10  
  5. syncLimit=5  
  6. dataDir=/home/hadoop/zookeeper-3.4.8/data  
  7. clientPort=2181  
  8.   
  9. # 這裏須要注意下server.{id}  
  10. server.23=10.8.177.23:2181:3887  
  11. server.24=10.8.177.24:2182:3888  
  12. server.25=10.8.177.25:2183:3889  

 2. 數據目錄

 

> zoo.cfg定義了dataDir,須要在每一個服務器的建立此目錄,並創建myid文件,內部存儲zoo.cfg中server.{id}的id數值

 

Shell代碼

 收藏代碼

  1. mkdir /home/hadoop/zookeeper-3.4.8/data  
  2. cd /home/hadoop/zookeeper-3.4.8/data  
  3. vi myid  
  4. 23  
  5.   
  6. ssh hd-24  
  7. mkdir /home/hadoop/zookeeper-3.4.8/data  
  8. cd /home/hadoop/zookeeper-3.4.8/data  
  9. vi myid  
  10. 24  
  11. exit  
  12.   
  13. ssh hd-25  
  14. mkdir /home/hadoop/zookeeper-3.4.8/data  
  15. cd /home/hadoop/zookeeper-3.4.8/data  
  16. vi myid  
  17. 25  
  18. exit  

 3. 啓停

 

 

Shell代碼

 收藏代碼

  1. cd /home/hadoop/zookeeper-3.4.8/bin  
  2. ./zkServer.sh start   

 

 

HBase部署

一、 配置hbase-site.xml

 

Xml代碼

 收藏代碼

  1. <configuration>  
  2.  <property>  
  3.   <name>hbase.rootdir</name>  
  4.   <value>hdfs://hd-23:6000/hbase</value>  
  5.  </property>  
  6.   
  7.  <property>  
  8.   <name>hbase.cluster.distributed</name>  
  9.   <value>true</value>  
  10.  </property>  
  11.   
  12. <property>  
  13.   <name>hbase.zookeeper.quorum</name>  
  14.   <value>hd-23,hd-24,hd-25</value>  
  15.  </property>  
  16.   
  17.  <property>  
  18.   <name>hbase.zookeeper.property.dataDir</name>  
  19.   <value>/home/hadoop/zookeeper-3.4.8/data</value>  
  20.  </property>  
  21. </configuration>  

 二、配置regionservers

 

 

Shell代碼

 收藏代碼

  1. vi regionservers  
  2. hd-23  
  3. hd-24  

 三、 scp發送至其餘機器

 

> 具體方式參見第一章第9節

四、 啓停hbase

==啓動hbase以前須先啓動hdfs==

Shell代碼

 收藏代碼

  1. start-hbase.sh  
  2. stop-hbase.sh  

 五、 jps查看

Shell代碼

 收藏代碼

  1. [hadoop@hd-23 bin]$ jps  
  2. 12304 QuorumPeerMain  
  3. 16208 ResourceManager  
  4. 24592 Jps  
  5. 22898 HMaster  
  6. 15843 NameNode  
  7. 23139 HRegionServer  
  8. 16042 SecondaryNameNode  
  9.   
  10. [root@hd-24 home]# jps  
  11. 14512 HRegionServer  
  12. 12082 QuorumPeerMain  
  13. 15276 Jps  
  14. 12924 DataNode  
  15. 13036 NodeManager  

 六、 瀏覽器查看

 

http://hd-23:16030/

結語

總結

經過以上步驟快速搭建了hadoop環境,在此期間,只有進行SSH免密登陸時須要登陸其餘兩臺機器進行添加公鑰文件,其他均經過一個SSH客戶端 窗口搞定(其實免密登陸也能夠)。linux發行版本爲centos7,若是使用centos 6.x的版本,修改主機名稱略有不一樣(`etc/sysconfig/network`,`hosts`,`reboot`)。

 

> - 猜測

 

> 搭建此環境的目的有兩點:

  

>  一、 提供一個hadoop測試環境。

 

>  二、 爲後續採用docker進行快速部署作預研。經過以上搭建過程可知,除了zookeeper的dataDir目錄中myid文件內容不一樣以外,其他的內容 均相同,而myid的內容能夠經過讀取zoo.cfg文件獲取,故若是此時要作多機docker集羣的話,只要解決了多機docker容器能互相訪問(同 個局域網),就能夠採用同一個鏡像進行快速部署。而使多機docker的容器可以訪問,能夠採用open vSwitch搭建一個局域網,這個也是下個實驗的目標。

相關文章
相關標籤/搜索