簡單搭建hadoop運行環境
Hadoop是Apache軟件基金會旗下的一個開源分布式計算平臺。以Hadoop分布式文件系統(HDFS,Hadoop Distributed Filesystem)和MapReduce(Google MapReduce的開源實現)為核心的Hadoop為用戶提供了系統底層細節透明的分布式基礎架構
對于Hadoop的集群來講,可以分成兩大類角色:Master和Salve。一個HDFS集群是由一個NameNode和若干個DataNode組成的。其中NameNode作為主服務器,管理文件系統的命名空間和客戶端對文件系統的訪問操作;集群中的DataNode管理存儲的數據。MapReduce框架是由一個單獨運行在主節點上的JobTracker和運行在每個集群從節點的TaskTracker共同組成的。主節點負責調度構成一個作業的所有任務,這些任務分布在不同的從節點上。主節點監控它們的執行情況,并且重新執行之前的失敗任務;從節點僅負責由主節點指派的任務。當一個Job被提交時,JobTracker接收到提交作業和配置信息之后,就會將配置信息等分發給從節點,同時調度任務并監控TaskTracker的執行。
從上面的介紹可以看出,HDFS和MapReduce共同組成了Hadoop分布式系統體系結構的核心。HDFS在集群上實現分布式文件系統,MapReduce在集群上實現了分布式計算和任務處理。HDFS在MapReduce任務處理過程中提供了文件操作和存儲等支持,MapReduce在HDFS的基礎上實現了任務的分發、跟蹤、執行等工作,并收集結果,二者相互作用,完成了Hadoop分布式集群的主要任務
一、安裝前的準備
已安裝"SoftwareDevelopment Workstation"軟件包的linux虛擬機3臺
jdk-6u45-linux-x64.bin安裝包、hadoop-1.0.0.tar.gz安裝包
1、設定linux虛擬機IP地址及主機名如下:
主機名 IP地址 master 192.168.232.129 salve1 192.168.232.130 salve2 192.168.232.131
2、向/etc/hosts文件添加內容,使虛擬機之間使用主機名能夠互ping(非常重要!!!)
# 可以只修改一個主機的/etc/hosts文件,然后用scp命令遠程傳輸覆蓋其他主機的hosts文件 [root@master ~]# vim /etc/hosts master 192.168.232.129 salve1 192.168.232.130 salve2 192.168.232.131 [root@master ~]# scp /etc/hosts root@salve1:/etc/hosts [root@master ~]# scp /etc/hosts root@salve2:/etc/hosts # 測試 [root@master ~]# ping master [root@master ~]# ping salve1 [root@master ~]# ping salve2
3、設置三臺主機ssh無密碼驗證配置
# 在master主機上生成密碼對 [root@master ~]# ssh-keygen -t rsa # 敲兩次回車,便會在/root/.ssh目錄下生成id_rsa.pub(公鑰文件)、id_rsa(私鑰文件) # 將公鑰文件追加到/root/.ssh/authorized_keys文件中,并測試是否可以實現無密碼登錄 [root@master ~]# cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys [root@master ~]# ssh master # 將公鑰文件遠程傳輸到salve1、salve2主機上 [root@master ~]# scp .ssh/id_rsa.pub root@salve1:/root/.ssh/ [root@master ~]# scp .ssh/id_rsa.pub root@salve2:/root/.ssh/ # 將傳輸過來的公鑰文件追加到authorized_keys,實現master主機ssh無密碼登陸salve1、salve2主機 [root@salve1 ~]# cat .ssh/id_rsa.pub >> .ssh/authorized_keys [root@salve2 ~]# cat .ssh/id_rsa.pub >> .ssh/authorized_keys # 測試 [root@master ~]# ssh salve1 [root@master ~]# ssh salve2 # 需要注意的是,以上操作還需要在其他主機上操作一次,以實現三臺主機均可以相互無密碼登錄 # 如果在以上操作完成后,出現登錄失敗的情況,請修改三個主機的ssh配置文件,修改以下參數,并重啟ssh服務 [root@master ~]# vim /etc/ssh/ssh_config RSAAuthentication yes # 啟用RSA認證 PubkeyAuthentication yes # 啟用公鑰、私鑰配對認證 [root@master ~]# service sshd restart
二、開始安裝配置
1、Java環境安裝(如果在安裝linux時安裝了SoftwareDevelopment Workstation軟件包,這一步可跳過)
1.1、安裝JDK
所有機器上都要安裝JDK,現在就在master主機安裝,然后其他主機按照步驟重復進行即可
# 創建/usr/java目錄,將jdk-6u45-linux-x64.bin復制到此目錄下,賦予執行權限,并執行 [root@master ~]# mkdir /usr/java [root@master ~]# cp jdk-6u45-linux-x64.bin /usr/java/ [root@master ~]# cd /usr/java/ [root@master java]# chmod +x jdk-6u45-linux-x64.bin [root@master java]# ./jdk-6u45-linux-x64.bin [root@master java]# lsjdk1.6.0_45 jdk-6u45-linux-x64.bin # 安裝完成后發現當前目錄下多了 jdk1.6.0_45 文件夾,安裝結束
1.2、配置環境變量
# 編輯/etc/profile文件,在尾部追加以下內容 [root@master ~]# vim /etc/profile # set java environment export JAVA_HOME=/usr/java/jdk1.6.0_45 export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$PATH:$JAVA_HOME/bin:$$JAVA_HOME/jre/bin # 執行下面命令使其配置立即生效,并進行測試 [root@master ~]# source /etc/profile [root@master ~]# java -version java version "1.6.0_45" OpenJDK Runtime Environment (rhel-2.4.3.3.el6-x86_64 u45-b15) OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)
1.3、安裝配置其他主機(同上,略)
2、hadoop集群安裝配置
2.1、hadoop集群安裝
所有機器上都要安裝JDK,現在就在master主機安裝,然后其他主機按照步驟重復進行即可
# 將軟件包解壓到/usr/目錄下,并重命名 [root@master ~]# tar –zxvf hadoop-1.0.0.tar.gz -C /usr/ [root@master ~]# cd /usr/ [root@master usr]# mv hadoop-1.0.0 hadoop # 在hadoop目錄下創建tmp文件夾 [root@master usr]# cd hadoop [root@master hadoop]# mkdir tmp
2.2、配置環境變量
# 編輯/etc/profile文件,在尾部追加以下內容 [root@master ~]# vim /etc/profile # set hadoop path export HADOOP_HOME=/usr/hadoop export PATH=$PATH:$HADOOP_HOME/bin # 執行下面命令使其配置立即生效 [root@master ~]# source /etc/profile
2.3、配置hadoop
1)配置hadoop-env.sh
該文件位于/usr/hadoop/conf目錄下
[root@master conf]# vim hadoop-env.sh # 如果是自己配置的JDK,則添加以下內容 # set java enviroment export JAVA_HOME=/usr/java/jdk1.6.0_45 # 如果是安裝SoftwareDevelopment Workstation軟件包,則添加以下內容 # set java enviromentexport JAVA_HOME=/usr
2)配置core-site.xml文件
[root@master conf]# vim core-site.xml <configuration> <property> <name>hadoop.tmp.dir</name> <value>/usr/hadoop/tmp</value> <description>A base for other temporary directories</description> </property> <property> <name>fs.default.name</name> <value>hdfs://192.168.232.129:9000</value> </property> </configuration>
3)配置hdfs-site.xml文件
[root@master conf]# vim hdfs-site.xml <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
4)配置mapred-site.xml文件
[root@master conf]# vim mapred-site.xml <configuration> <property> <name>mapred.job.tracker</name> <value>http://192.168.232.129:9001</value> </property> </configuration>
5)配置masters文件
# 將原來的localhost去掉 [root@master conf]# vim masters 192.168.232.129 # master主機的IP地址 # master # master主機名(要保證hosts文件已修改)
6)配置salves文件
[root@master conf]# vim slaves 192.168.232.130 # salve1的IP地址 192.168.232.131 # salve2的IP地址 # salve1 # salve1主機名(要保證hosts文件已修改) # salve1 # salve2主機名(要保證hosts文件已修改)
master主機配置完成
2.4、配置salve1主機、salve2主機
# 只需要將配置好的hadoop文件夾遠程傳輸到salve1和salve2上即可 [root@master ~]# scp -r /usr/hadoop root@salve1:/usr/ [root@master ~]# scp -r /usr/hadoop root@salve2:/usr/ # 并且修改salve1主機、salve2主機的/etc/profile文件 [root@salve1 ~]# vim /etc/profile # set hadoop pathexport HADOOP_HOME=/usr/hadoop export PATH=$PATH:$HADOOP_HOME/bin # 執行下面命令使其配置立即生效 [root@salve1 ~]# source /etc/profile
配置完成
三、啟動及驗證
1、格式化HDFS文件系統(只需一次,下次啟動不再需要格式化)
[root@master ~]# hadoop namenode -format
2、啟動hadoop
[root@master ~]# start-all.sh
3、驗證hadoop
3.1、用java自帶的jps查看進程
# 在master上查看 [root@master ~]# jps 5434 JobTracker 4447 SecondaryNameNode 5221 NameNode 5535 Jps # 在salve1上查看 [root@salve1 ~]# jps 4313 Jps 4260 TaskTracker 4171 DataNode
3.2、用"hadoop dfsadmin -report"查看Hadoop集群的狀態
[root@master ~]# hadoop dfsadmin -report
3.3、用網頁查看集群
1)訪問http://192.168.232.129:50030
2)訪問http://192.168.232.129:50070
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。