最新的hadoop2.5 安裝目錄做了一定修改,安裝變得稍微簡單一點
成都創新互聯是一家集網站建設,連平企業網站建設,連平品牌網站建設,網站定制,連平網站建設報價,網絡營銷,網絡優化,連平網站推廣為一體的創新建站企業,幫助傳統企業提升企業形象加強企業競爭力。可充分滿足這一群體相比中小企業更為豐富、高端、多元的互聯網需求。同時我們時刻保持專業、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們為更多的企業打造出實用型網站。首先安裝準備工具
$ sudo apt-get install ssh $ sudo apt-get install rsync配置ssh $ ssh localhostIf you cannot ssh to localhost without a passphrase, execute the following commands:
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys進入etc/hadoop/hadoop-env.sh 配置運行環境
# set to the root of your Java installation export JAVA_HOME=/usr/java/latest # Assuming your installation directory is /usr/local/hadoop export HADOOP_PREFIX=/usr/local/hadoop配置hdfs端口和備份數
etc/hadoop/core-site.xml:
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property><property>#ClientDatanodeProtocol 調用getBlockLocalPathInfo的時候 <name>dfs.block.local-path-access.user</name> <value>infomorrow</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/infomorrow/hadoop-tmp</value> </property></configuration>etc/hadoop/hdfs-site.xml:
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>配置使用yarn
etc/hadoop/mapred-site.xml:
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>etc/hadoop/yarn-site.xml:
NodeManager 在 啟 動 時 加 載shuffle server,shuffle server 實 際 上 是 Jetty/Netty Server,Reduce Task 通 過 該 server 從 各 個NodeManager 上遠程復制 Map Task 產生的中間結果
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>啟動過程:
hdfs
yarn
關閉:
$ sbin/stop-dfs.sh$ sbin/stop-yarn.sh用chukwa的人很少 去hadoop論壇問問吧
目測能。。
偽分布模式也是在一臺單機上運行,但用不同的 Java 進程模仿分布式運行中的各類結點 ( NameNode, DataNode, JobTracker, TaskTracker, Secondary NameNode ),分布式運行中的這幾個結點的區別:
從分布式存儲的角度來說,集群中的結點由一個 NameNode 和若干個 DataNode 組成, 另有一個 Secondary NameNode 作為 NameNode 的備份。
從分布式應用的角度來說,集群中的結點由一個 JobTracker 和若干個 TaskTracker 組成,JobTracker 負責任務的調度,TaskTracker 負責并行執行任務。
TaskTracker 必須運行在 DataNode 上,這樣便于數據的本地計算。JobTracker 和 NameNode 則無須在同一臺機器上。
偽分布模式安裝步驟:
1.解壓到某目錄下并設置JAVA_HOME。
2.修改配置文件:
a)修改conf/core-site.xml:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
b)修改conf/mapred-site.xml:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
c)修改conf/hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
#參數 fs.default.name 指定 NameNode 的 IP 地址和端口號。缺省值是 file:///, 表示使用本地文件系統, 用于單機非分布式模式。此處我們指定使用運行于本機 localhost 上的 NameNode。
#參數 mapred.job.tracker 指定 JobTracker 的 IP 地址和端口號。缺省值是 local, 表示在本地同一 Java 進程內執行 JobTracker 和 TaskTracker, 用于單機非分布式模式。此處我們指定使用運行于本機 localhost 上的 JobTracker ( 用一個單獨的 Java 進程做 JobTracker )。
#參數 dfs.replication 指定 HDFS 中每個 Block 被復制的次數,起數據冗余備份的作用。 在典型的生產系統中,這個數常......余下全文>>
歷時一周多,終于搭建好最新版本hadoop2.2集群,期間遇到各種問題,作為菜鳥真心被各種折磨,不過當wordcount給出結果的那一刻,興奮的不得了~~(文當中若有錯誤之處或疑問歡迎指正,互相學習)
PS:轉載請注明來源:http://blog.csdn.net/licongcong_0224/article/details/12972889
另外:歡迎配置過程中遇到問題的朋友留言,相互討論,并且能夠把解決方法共享給大家。下面評論中有幾個朋友遇到的問題和解決方法,歡迎參考!
特別說明:我本人也是hadoop入門不久,并正在學習中,所以當初配置也是參考了很多資料,給出的這個參考配置可以保證大家配置的集群正常work,如果是真正的生產環境,那文檔中是有很多紕漏了,如下面的幾位大牛評論。謝謝參考,并提意見,互相學習!
第一部分 Hadoop 2.2 下載
Hadoop我們從Apache官方網站直接下載最新版本Hadoop2.2。官方目前是提供了linux32位系統可執行文件,所以如果需要在64位系統上部署則需要單獨下載src 源碼自行編譯(10樓評論中提供了一個解決方法鏈接)。
下載地址:http://apache.claz.org/hadoop/common/hadoop-2.2.0/
如下圖所示,下載紅色標記部分即可。如果要自行編譯則下載src.tar.gz.
第二部分 集群環境搭建
1、這里我們搭建一個由三臺機器組成的集群:
192.168.0.1 hduser/passwd cloud001 nn/snn/rm CentOS6 64bit
192.168.0.2 hduser/passwd cloud002 dn/nm Ubuntu13.04 32bit
192.168.0.3 hduser/passwd cloud003 dn/nm Ubuntu13.0432bit
1.1 上面各列分別為IP、user/passwd、hostname、在cluster中充當的角色(namenode, secondary namenode, datanode , resourcemanager, nodemanager)
1.2 Hostname可以在/etc/hostname中修改(ubuntu是在這個路徑下,redhat稍有不同)
1.3 這里我們為每臺機器新建了一個賬戶hduser.這里需要給每個賬戶分配sudo的權限。(切換到root賬戶,修改/etc/sudoers文件,增加:hduser ALL=(ALL) ALL )
2、修改/etc/hosts 文件,增加三臺機器的ip和hostname的映射關系
192.168.0.1 cloud001
192.168.0.2 cloud002
192.168.0.3 cloud003
3、打通cloud001到cloud002、cloud003的SSH無密碼登陸
3.1 安裝ssh
一般系統是默認安裝了ssh命令的。如果沒有,或者版本比較老,則可以重新安裝:
sodu apt-get install ssh
3.2設置local無密碼登陸
安裝完成后會在~目錄(當前用戶主目錄,即這里的/home/hduser)下產生一個隱藏文件夾.ssh(ls -a 可以查看隱藏文件)。如果沒有這個文件,自己新建即可(mkdir .ssh)。
具體步驟如下:
1、 進入.ssh文件夾
2、 ssh-keygen -t rsa 之后一路回 車(產生秘鑰)
3、 把id_rsa.pub 追加到授權的 key 里面去(cat id_rsa.pub >> authorized_keys)
4、 重啟 SSH 服 務命令使其生效 :service sshd restart(這里RedHat下為sshdUbuntu下為ssh)
此時已經可以進行ssh localhost的無密碼登陸
【注意】:以上操作在每臺機器上面都要進行。
3.3設置遠程無密碼登陸
這里只有cloud001是master,如果有多個namenode,或者rm的話則需要打通所有master都其他剩余節點的免密碼登陸。(將001的authorized_keys追加到002和003的authorized_keys)
進入001的.ssh目錄
scp authorized_keys hduser@cloud002:~/.ssh/ authorized_keys_from_cloud001
進入002的.ssh目錄
cat authorized_keys_from_cloud001>> authorized_keys
至此,可以在001上面sshhduser@cloud002進行無密碼登陸了。003的操作相同。
4、安裝jdk(建議每臺機器的JAVA_HOME路徑信息相同)
注意:這里選擇下載jdk并自行安裝,而不是通過源直接安裝(apt-get install)
4.1、下載jkd( http://www.oracle.com/technetwork/java/javase/downloads/index.html)
4.1.1 對于32位的系統可以下載以下兩個Linux x86版本(uname -a 查看系統版本)
4.1.2 64位系統下載Linux x64版本(即x64.rpm和x64.tar.gz)
4.2、安裝jdk(這里以.tar.gz版本,32位系統為例)
安裝方法參考http://docs.oracle.com/javase/7/docs/webnotes/install/linux/linux-jdk.html
4.2.1 選擇要安裝java的位置,如/usr/目錄下,新建文件夾java(mkdirjava)
4.2.2 將文件jdk-7u40-linux-i586.tar.gz移動到/usr/java
4.2.3 解壓:tar -zxvf jdk-7u40-linux-i586.tar.gz
4.2.4 刪除jdk-7u40-linux-i586.tar.gz(為了節省空間)
至此,jkd安裝完畢,下面配置環境變量
4.3、打開/etc/profile(vim /etc/profile)
在最后面添加如下內容:
JAVA_HOME=/usr/java/jdk1.7.0_40(這里的版本號1.7.40要根據具體下載情況修改)
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOMECLASSPATH PATH
4.4、source /etc/profile
4.5、驗證是否安裝成功:java–version
【注意】每臺機器執行相同操作,最后將java安裝在相同路徑下(不是必須的,但這樣會使后面的配置方便很多)
5、關閉每臺機器的防火墻
RedHat:
/etc/init.d/iptables stop 關閉防火墻。
chkconfig iptables off 關閉開機啟動。
Ubuntu:
ufw disable (重啟生效)
第三部分 Hadoop 2.2安裝過程
由于hadoop集群中每個機器上面的配置基本相同,所以我們先在namenode上面進行配置部署,然后再復制到其他節點。所以這里的安裝過程相當于在每臺機器上面都要執行。但需要注意的是集群中64位系統和32位系統的問題。
1、 解壓文件
將第一部分中下載的hadoop-2.2.tar.gz解壓到/home/hduser路徑下(或者將在64位機器上編譯的結果存放在此路徑下)。然后為了節省空間,可刪除此壓縮文件,或將其存放于其他地方進行備份。
注意:每臺機器的安裝路徑要相同!!
2、 hadoop配置過程
配置之前,需要在cloud001本地文件系統創建以下文件夾:
~/dfs/name
~/dfs/data
~/temp
這里要涉及到的配置文件有7個:
~/hadoop-2.2.0/etc/hadoop/hadoop-env.sh
~/hadoop-2.2.0/etc/hadoop/yarn-env.sh
~/hadoop-2.2.0/etc/hadoop/slaves
~/hadoop-2.2.0/etc/hadoop/core-site.xml
~/hadoop-2.2.0/etc/hadoop/hdfs-site.xml
~/hadoop-2.2.0/etc/hadoop/mapred-site.xml
~/hadoop-2.2.0/etc/hadoop/yarn-site.xml
以上個別文件默認不存在的,可以復制相應的template文件獲得。
配置文件1:hadoop-env.sh
修改JAVA_HOME值(export JAVA_HOME=/usr/java/jdk1.7.0_40)
配置文件2:yarn-env.sh
修改JAVA_HOME值(exportJAVA_HOME=/usr/java/jdk1.7.0_40)
配置文件3:slaves (這個文件里面保存所有slave節點)
寫入以下內容:
cloud002
cloud003
配置文件4:core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://cloud001:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hduser/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>hadoop.proxyuser.hduser.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hduser.groups</name>
<value>*</value>
</property>
</configuration>
配置文件5:hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>cloud001:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hduser/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hduser/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
配置文件6:mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>cloud001:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>cloud001:19888</value>
</property>
</configuration>
配置文件7:yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>cloud001:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value> cloud001:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value> cloud001:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value> cloud001:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value> cloud001:8088</value>
</property>
</configuration>
3、復制到其他節點
這里可以寫一個shell腳本進行操作(有大量節點時比較方便)
cp2slave.sh
#!/bin/bash
scp–r /home/hduser/hadoop-2.2.0 hduser@cloud002:~/
scp–r /home/hduser/hadoop-2.2.0 hduser@cloud003:~/
注意:由于我們集群里面001是64bit 而002和003是32bit的,所以不能直接復制,而采用單獨安裝hadoop,復制替換相關配置文件:
Cp2slave2.sh
#!/bin/bash
scp /home/hduser/hadoop-2.2.0/etc/hadoop/slaveshduser@cloud002:~/hadoop-2.2.0/etc/hadoop/slaves
scp /home/hduser/hadoop-2.2.0/etc/hadoop/slaveshduser@cloud003:~/hadoop-2.2.0/etc/hadoop/slaves
scp /home/hduser/hadoop-2.2.0/etc/hadoop/core-site.xmlhduser@cloud002:~/hadoop-2.2.0/etc/hadoop/core-site.xml
scp /home/hduser/hadoop-2.2.0/etc/hadoop/core-site.xml hduser@cloud003:~/hadoop-2.2.0/etc/hadoop/core-site.xml
scp /home/hduser/hadoop-2.2.0/etc/hadoop/hdfs-site.xmlhduser@cloud002:~/hadoop-2.2.0/etc/hadoop/hdfs-site.xml
scp /home/hduser/hadoop-2.2.0/etc/hadoop/hdfs-site.xmlhduser@cloud003:~/hadoop-2.2.0/etc/hadoop/hdfs-site.xml
scp /home/hduser/hadoop-2.2.0/etc/hadoop/mapred-site.xmlhduser@cloud002:~/hadoop-2.2.0/etc/hadoop/mapred-site.xml
scp /home/hduser/hadoop-2.2.0/etc/hadoop/mapred-site.xmlhduser@cloud003:~/hadoop-2.2.0/etc/hadoop/mapred-site.xml
scp /home/hduser/hadoop-2.2.0/etc/hadoop/yarn-site.xmlhduser@cloud002:~/hadoop-2.2.0/etc/hadoop/yarn-site.xml
scp /home/hduser/hadoop-2.2.0/etc/hadoop/yarn-site.xmlhduser@cloud003:~/hadoop-2.2.0/etc/hadoop/yarn-site.xml
4、啟動驗證
4.1 啟動hadoop
進入安裝目錄: cd ~/hadoop-2.2.0/
格式化namenode:./bin/hdfs namenode –format
啟動hdfs: ./sbin/start-dfs.sh
此時在001上面運行的進程有:namenode secondarynamenode
002和003上面運行的進程有:datanode
啟動yarn: ./sbin/start-yarn.sh
此時在001上面運行的進程有:namenode secondarynamenoderesourcemanager
002和003上面運行的進程有:datanode nodemanaget
查看集群狀態:./bin/hdfs dfsadmin –report
查看文件塊組成: ./bin/hdfsfsck / -files -blocks
查看HDFS: http://16.187.94.161:50070
查看RM: http:// 16.187.94.161:8088
4.2 運行示例程序:
先在hdfs上創建一個文件夾
./bin/hdfs dfs –mkdir /input
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jarrandomwriter input
PS:dataNode 無法啟動是配置過程中最常見的問題,主要原因是多次format namenode 造成namenode 和datanode的clusterID不一致。建議查看datanode上面的log信息。解決辦法:修改每一個datanode上面的CID(位于dfs/data/current/VERSION文件夾中)使兩者一致。還有一種解決方法見下面6樓評論!
文章名稱:hadoop轉-創新互聯
新聞來源:http://m.newbst.com/article34/dcjope.html
成都網站建設公司_創新互聯,為您提供網站導航、做網站、自適應網站、靜態網站、品牌網站設計、動態網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯