hadoop集羣部署
1. 準備三臺機器,如`10.8.177.23`,`10.8.177.24`,`10.8.177.25`javascript
2. 修改主機名稱,配置`hosts`文件(root用戶下操做):java
Shell代碼node
- # 每臺機器執行,我這裏hd開頭,後邊的數字與機器ip的最後一個組一致
- hostnamectl set-hostname hd-23
- hostnamectl set-hostname hd-23 --static
-
- # 修改hosts文件,
- vi /etc/hosts
- #加入路由配置
- 10.8.177.23 hd-23
- 10.8.177.24 hd-24
- 10.8.177.25 hd-25
3. 每臺機器上建立一個用戶,如hadoop:linux
Shell代碼web
- useradd -d /home/hadoop -m hadoop
- # 最好建立一個用戶,不要直接使用root進行操做
4. 設置免密登陸(==hadoop用戶,下同==)docker
> 只須要設置master對於其餘兩臺機器進行免密登陸便可apache
Shell代碼centos
- # 一、 在Master機器上的主目錄中生成ssh公鑰
- ssh-keygen -t rsa
- # 二、 在其他機器上主目錄中建立.ssh目錄(執行上邊的命令也能夠)
- # 三、 將Master的公鑰發送給其他兩臺服務器(須要輸入免密)
- scp id_rsa.pub hadoop@hd-24:/home/hadoop/.ssh/id_rsa.pub.23
- scp id_rsa.pub hadoop@hd-25:/home/hadoop/.ssh/id_rsa.pub.23
- # 四、 在.shh中建立authorized_keys文件,並受權
- touch authorized_keys
- chmod 644 authorized_keys
- # 五、 將Master的公鑰加入到受權文件中
- echo id_rsa.pub.23 >> authorized_keys
- # 以上,便可從23無密訪問24,25,可使用如下命令測試:
- ssh hd-24
5. 下載jdk、hadoop、hbase、zookeeper瀏覽器
Shell代碼bash
- > - 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`
- > - zookeeper-3.4.8.tar.gz: `wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz`
- > - 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`
- > - 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代碼
- vi ~/.bashrc
- JAVA_HOME=/home/hadoop/jdk1.8.0_77
- JRE_HOME=$JAVA_HOME/jre
- CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
-
- HADOOP_HOME=/home/hadoop/hadoop-2.7.2
- HBASE_HOME=/home/hadoop/hbase-1.2.2
- PATH=.:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HBASE_HOME/bin:$HBASE_HOME/sbin
- expor JAVA_HOME JRE_HOME CLASSPATH HADOOP_HOME HBASE_HOME
- # 配置完成之後進行編譯生效
- source .bashrc
-
- #發送給其他機器
- 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代碼
- <configuration>
- <property>
- <name>fs.defaultFS</name>
- <value>hdfs://hd-23:6000</value>
- <final>true</final>
- </property>
-
- <property>
- <name>hadoop.tmp.dir</name>
- <value>/home/hadoop/configsets/hadoop_tmp</value>
- </property>
-
- <property>
- <name>fs.checkpoint.period</name>
- <value>3600</value>
- </property>
-
- <property>
- <name>fs.checkpoint.size</name>
- <value>67108864</value>
- </property>
-
- </configuration>
hdfs-site.xml
Xml代碼
- <configuration>
- <property>
- <name>dfs.namenode.name.dir</name>
- <value>/home/hadoop/configsets/metadata</value>
- </property>
-
- <property>
- <name>dfs.http.address</name>
- <value>hd-23:50070</value>
- </property>
-
- <property>
- <name>dfs.namenode.secondary.http-address</name>
- <value>hd-23:50090</value>
- </property>
-
- <property>
- <name>dfs.datanode.data.dir</name>
- <value>/home/hadoop/configsets/data</value>
- </property>
-
- <property>
- <name>dfs.replication</name>
- <value>2</value>
- </property>
- </configuration>
yarn-site.xml
Xml代碼
- <configuration>
-
- <property>
- <name>yarn.resourcemanager.hostname</name>
- <value>hd-23</value>
- </property>
-
- <property>
- <name>yarn.resourcemanager.aux-services</name>
- <value>mapreduce_shuffle</value>
- </property>
-
- <property>
- <name>yarn.log.dir</name>
- <value>/home/hadoop/configsets/yarn_log</value>
- </property>
- </configuration>
mapred-site.xml,這個文件若是不存在的話`cp mapred-site.xml.template mapred-site.xml`一個
Xml代碼
- <configuration>
- <property>
- <name>mapreduce.framework.name</name>
- <value>yarn</value>
- </property>
-
- <property>
- <name>mapreduce.cluster.temp.dir</name>
- <value>/home/hadoop/configsets/mr_tmp</value>
- <final>true</final>
- </property>
-
- <property>
- <name>mapreduce.jobhistory.address</name>
- <value>hd-23:6002</value>
- </property>
-
- <property>
- <name>mapreduce.jobhistory.webapp.address</name>
- <value>hd-23:6003</value>
- </property>
- </configuration>
hadoop-env.sh 將JAVA_HOME配置進去
Shell代碼
- #將下邊這句話註釋了,很差用,但按理說應該能用,結果就是很差用
- #export JAVA_HOME=${JAVA_HOME}
- export JAVA_HOME=/home/hadoop/jdk1.8.0_77
- ```
slaves 文件中加入25,24
Java代碼
- hd-24
- hd-25
9. 打包發送至其餘機器
jdk、hadoop、hbase、zookeeper均可以採用這種方式配置後,進行發送,zookeeper稍有不一樣(詳見後文)
Shell代碼
- tar cf hadoop-2.7.2.tar hadoop-2.7.2
- scp hadoop-2.7.2.tar hadoop@hd-24:/home/hadoop
- scp hadoop-2.7.2.tar hadoop@hd-25:/home/hadoop
- ssh hd-24
- tar xf hadoop-2.7.2.tar
- exit
- ssh hd-25
- tar xf hadoop-2.7.2.tar
- exit
10. 格式化名稱節點
Shell代碼
- hadoop namenode -farmat
11. 啓停hadoop集羣
Java代碼
- # 啓動
- start-all.sh
-
- #中止
- stop-all.sh
12. jsp查看
Java代碼
- [hadoop@hd-23 ~]$ jps
- 12304 QuorumPeerMain
- 16208 ResourceManager
- 24322 Jps
- 15843 NameNode
- 16042 SecondaryNameNode
-
- [root@hd-24 home]# jps
- 12082 QuorumPeerMain
- 15116 Jps
- 12924 DataNode
- 13036 NodeManager
-
- [hadoop@hd-25 ~]$ jps
- 20130 DataNode
- 20242 NodeManager
- 19317 QuorumPeerMain
- 21755 Jps
13. 瀏覽器查看
Java代碼
- http://hd-23:50070/
- http://hd-23:8088/
zookeeper集羣部署
1. 配置,配置文件位於`/home/hadoop/zookeeper-3.4.8/conf`
Shell代碼
- cp zoo_sample.cfg zoo.cfg
- vi zoo.cfg
- tickTime=2000
- initLimit=10
- syncLimit=5
- dataDir=/home/hadoop/zookeeper-3.4.8/data
- clientPort=2181
-
- # 這裏須要注意下server.{id}
- server.23=10.8.177.23:2181:3887
- server.24=10.8.177.24:2182:3888
- server.25=10.8.177.25:2183:3889
2. 數據目錄
> zoo.cfg定義了dataDir,須要在每一個服務器的建立此目錄,並創建myid文件,內部存儲zoo.cfg中server.{id}的id數值
Shell代碼
- mkdir /home/hadoop/zookeeper-3.4.8/data
- cd /home/hadoop/zookeeper-3.4.8/data
- vi myid
- 23
-
- ssh hd-24
- mkdir /home/hadoop/zookeeper-3.4.8/data
- cd /home/hadoop/zookeeper-3.4.8/data
- vi myid
- 24
- exit
-
- ssh hd-25
- mkdir /home/hadoop/zookeeper-3.4.8/data
- cd /home/hadoop/zookeeper-3.4.8/data
- vi myid
- 25
- exit
3. 啓停
Shell代碼
- cd /home/hadoop/zookeeper-3.4.8/bin
- ./zkServer.sh start
HBase部署
一、 配置hbase-site.xml
Xml代碼
- <configuration>
- <property>
- <name>hbase.rootdir</name>
- <value>hdfs://hd-23:6000/hbase</value>
- </property>
-
- <property>
- <name>hbase.cluster.distributed</name>
- <value>true</value>
- </property>
-
- <property>
- <name>hbase.zookeeper.quorum</name>
- <value>hd-23,hd-24,hd-25</value>
- </property>
-
- <property>
- <name>hbase.zookeeper.property.dataDir</name>
- <value>/home/hadoop/zookeeper-3.4.8/data</value>
- </property>
- </configuration>
二、配置regionservers
Shell代碼
- vi regionservers
- hd-23
- hd-24
三、 scp發送至其餘機器
> 具體方式參見第一章第9節
四、 啓停hbase
==啓動hbase以前須先啓動hdfs==
Shell代碼
- start-hbase.sh
- stop-hbase.sh
五、 jps查看
Shell代碼
- [hadoop@hd-23 bin]$ jps
- 12304 QuorumPeerMain
- 16208 ResourceManager
- 24592 Jps
- 22898 HMaster
- 15843 NameNode
- 23139 HRegionServer
- 16042 SecondaryNameNode
-
- [root@hd-24 home]# jps
- 14512 HRegionServer
- 12082 QuorumPeerMain
- 15276 Jps
- 12924 DataNode
- 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搭建一個局域網,這個也是下個實驗的目標。