Hadoop 2.0集群配置詳細(xì)教程
1. hadoop common:為其他項(xiàng)目提供基礎(chǔ)設(shè)施
2. HDFS 分布式的文件系 統(tǒng)
3. MapReduce : A software framework for distributed processing of large data sets on compute clusters 。一個(gè) 簡(jiǎn)化分布式編程的框架。
4. 其他工程包含: Avro( 序列化系 統(tǒng) ) ,Cassandra( 數(shù)據(jù) 庫(kù)項(xiàng)目 ) 等
Hadoop,以 Hadoop 分布式文件系統(tǒng)( HDFS ,Hadoop Distributed Filesystem )和 MapReduce ( Google MapReduce 的開(kāi)源實(shí)現(xiàn))為核心的 Hadoop 為用戶提供了系統(tǒng)底層細(xì)節(jié)透明的分布式基礎(chǔ)架構(gòu)。
對(duì)于 Hadoop 的集群來(lái)講,可以分成兩大類角色: Master 和 Salve 。一個(gè) HDFS 集群是由一個(gè) NameNode 和若干個(gè) DataNode 組成的。其中 NameNode 作為主服務(wù)器,管理文件系統(tǒng)的命名空間和客戶端對(duì)文件系統(tǒng)的訪問(wèn)操作;集群中的DataNode 管理存儲(chǔ)的數(shù)據(jù)。 MapReduce 框架是由一個(gè) 單獨(dú)運(yùn)行在主節(jié)點(diǎn)上的 JobTracker 和 運(yùn)行在每個(gè)集群從節(jié)點(diǎn)的 TaskTracker 共同 組成的。主節(jié)點(diǎn)負(fù)責(zé)調(diào)度構(gòu)成一個(gè)作業(yè)的所有任務(wù),這些任務(wù)分布在不同的從節(jié)點(diǎn)上。主節(jié)點(diǎn)監(jiān)控它們的執(zhí)行情況,并且重新執(zhí)行之前的失敗任務(wù);從節(jié)點(diǎn)僅負(fù)責(zé)由主節(jié)點(diǎn)指派的任務(wù)。當(dāng)一個(gè) Job 被提交時(shí), JobTracker 接收到提交作 業(yè)和配置信息之后,就會(huì)將配置信息等分發(fā)給從節(jié)點(diǎn),同時(shí)調(diào)度任務(wù)并監(jiān)控 TaskTracker 的執(zhí)行。
從上面的介紹可以看出, HDFS 和 MapReduce 共同 組成了Hadoop分布式系 統(tǒng)體系結(jié)構(gòu)的核心。HDFS 在集群上 實(shí)現(xiàn)分布式文件系統(tǒng), MapReduce 在集群上實(shí)現(xiàn)了分布式計(jì)算和任務(wù)處理。 HDFS 在 MapReduce 任 務(wù)處理過(guò)程中提供了文件操作和存儲(chǔ)等支持, MapReduce在HDFS的基 礎(chǔ)上實(shí)現(xiàn)了任務(wù)的分發(fā)、跟蹤、執(zhí)行等工作,并收集結(jié)果,二者相互作用,完成了 Hadoop 分布式集群的主要任 務(wù)。
為什么要使用2.0版本(來(lái)自董的博客)
該版本提供了一些新的、重要的功能,包括:
• HDFS HA ,當(dāng)前只能 實(shí)現(xiàn)人工切換。
Hadoop HA 分支 merge 進(jìn)了該版本,并支持熱切,主要特性包括:
( 1 ) NN 配置文件有改變,使得配置更加簡(jiǎn)單
( 2 ) NameNode 分 為兩種角色: active NN 與 standby NN , active NN 對(duì)外提供讀寫(xiě)服務(wù),一旦出現(xiàn)故障,便切換到 standby NN 。
( 3 ) 支持 Client 端重定向,也就是 說(shuō),當(dāng) active NN 切 換到 standby NN 過(guò)程中, Client 端所有的 進(jìn)行時(shí)操作都可以無(wú)縫透明重定向到 standby NN 上, Client 自己感 覺(jué)不到切換過(guò)程。
( 4 ) DN 同 時(shí)向 active NN 和 standby NN 匯報(bào) block 信息。
具體 設(shè)計(jì)文檔參考: https://issues.apache.org/jira/browse/HDFS-1623
當(dāng)前 Hadoop HA 只能 實(shí)現(xiàn)人工切換,該功能在某些情況下非常有用,比如,對(duì) NN 進(jìn)行升級(jí)時(shí),先將 NN 切 換到 standby NN ,并 對(duì)之前的 active NN 進(jìn)行升級(jí),升級(jí)完成后,再將 NN 切 換至升級(jí)后的 NN 上,然后 對(duì) standby NN 進(jìn)行升級(jí)。
• YARN ,下一代 MapReduce 這是一套資源統(tǒng)一管理和調(diào)度平臺(tái),可管理各種計(jì)算框架,包括 MapReduce 、 Spark 、 MPI 等。
YARN 是一套 資源統(tǒng)一管理和調(diào)度平臺(tái),可管理各種計(jì)算框架,包括 MapReduce , Spark , MPI 等。盡管它是完全重寫(xiě)而成,但其思想是從 MapReduce 衍化而來(lái)的,并克服了它在 擴(kuò)展性和容錯(cuò)性等方面的眾多不足。具體參考:
http://hadoop.apache.org/common/docs/r0.23.0/hadoop-yarn/hadoop-yarn-site/YARN.html
• HDFS Federation ,允 許 HDFS 中存在多個(gè) NameNode ,且每個(gè) NameNode 分管一部分目 錄,而 DataNode 不 變,進(jìn)而縮小了故障帶來(lái)的影響范圍,并起到一定的隔離作用。
傳統(tǒng) HDFS 是 master/slave 結(jié)構(gòu),其中, master (也就是 NameNode )需要存 儲(chǔ)所有文件系統(tǒng)的元數(shù)據(jù)信息,且所有文件存儲(chǔ)操作均需要訪問(wèn)多次 NameNode ,因而 NameNode 成 為制約擴(kuò)展性的主要瓶頸所在。為了解決該問(wèn)題,引入了 HDFS Federation ,允 許 HDFS 中存在多個(gè) NameNode ,且每個(gè) NameNode 分管一部分目 錄,而 DataNode 不 變,也就是 “ 從中央集權(quán) 專政變?yōu)楦鱾€(gè)地方自治 ” , 進(jìn)而縮小了故障帶來(lái)的影響范圍,并起到一定的隔離作用。具體參考:
http://dongxicheng.org/mapreduce-nextgen/nextgen-mapreduce-introduction/
• 基準(zhǔn)性能測(cè)試
該版本中為 HDFS 和 YARN 添加了性能的基準(zhǔn) 測(cè)試集,其中 HDFS 測(cè)試包括:
( 1 ) dfsio 基準(zhǔn) 測(cè)試 HDFS I/O 讀寫(xiě)性能
( 2 ) slive 基準(zhǔn) 測(cè)試 NameNode 內(nèi)部操作的性能
( 3 ) scan 基準(zhǔn) 測(cè)試 MapReduce 作 業(yè)訪問(wèn) HDFS 的 I/O 性能
( 4 ) shuffle 基準(zhǔn) 測(cè)試 shuffle 階段性能
( 5 ) compression 基準(zhǔn) 測(cè)試 MapReduce 作 業(yè)中間結(jié)果和最終結(jié)果的壓縮性能
( 6 ) gridmix-V3 基準(zhǔn) 測(cè)試集群吞吐率
YARN 測(cè)試包括 :
( 1 ) ApplicationMaster 擴(kuò)展性基準(zhǔn)測(cè)試
主要 測(cè)試調(diào)度 task/container 的性能。與 1.0 版本比 較,大約快 2 倍。
( 2 ) ApplicationMaster 恢復(fù)性基準(zhǔn) 測(cè)試
測(cè)試 YARN 重 啟后,作業(yè)恢復(fù)速度。稍微解釋一下 ApplicationMaster 恢復(fù)作 業(yè)的功能:在作業(yè)執(zhí)行過(guò)程中, Application Master 會(huì)不斷地將作 業(yè)運(yùn)行狀態(tài)保存到磁盤(pán)上,比如哪些任務(wù)運(yùn)行完成,哪些未完成等,這樣,一旦集群重啟或者 master 掛掉,重 啟后,可復(fù)原各個(gè)作業(yè)的狀態(tài),并只需重新運(yùn)行未運(yùn)行完成的哪些任務(wù)。
( 3 ) ResourceManager 擴(kuò)展性基準(zhǔn)測(cè)試
通 過(guò)不斷向 Hadoop 集群中添加 節(jié)點(diǎn)測(cè)試 RM 的 擴(kuò)展性。
( 4 ) 小作 業(yè)基準(zhǔn)測(cè)試
專門(mén)測(cè)試批量小作業(yè)的吞吐率
具體參考:
http://hortonworks.com/blog/delivering-on-hadoop-next-benchmarking-performance/
• 通過(guò) protobufs 來(lái)提供HDFS 和YARN 的兼容性
Wire-compatibility for both HDFS & YARN
Hadoop RPC采用了Hadoop自己的一套序列化框架 對(duì) 各種 對(duì) 象 進(jìn) 行序列化反序列,但存在一個(gè) 問(wèn)題 : 擴(kuò) 展性差,很 難 添加新的數(shù)據(jù)類型同 時(shí) 保 證 版本兼容性。 為 此,Hadoop 2.0將數(shù)據(jù)類型模 塊 從RPC中獨(dú)立出來(lái),成 為 一個(gè)獨(dú)立的可插拔模 塊 , 這樣 允 許 用 戶 根據(jù)個(gè)人 愛(ài) 好使用各種序列化/反序列化框架,比如thrift,arvo,protocal Buffer等,默 認(rèn) 情況采用Protocal Buffer。
http://hortonworks.com/blog/rpc-improvements-and-wire-compatibility-in-apache-hadoop/
除了以上五個(gè)特性外, 還 有兩個(gè)非常重要的特性正在研 發(fā) 中,分別是:
• HDFS快照
用 戶 可在任意 時(shí)間對(duì) HDFS做快照, 這樣 ,在HDFS出 現(xiàn) 故障 時(shí) ,可將數(shù)據(jù)恢復(fù)到某個(gè) 時(shí)間 點(diǎn)的狀 態(tài) 。具體參考:
http://hortonworks.com/blog/snapshots-for-hdfs/
• HDFS HA自動(dòng) 切換
前面介 紹 的第一個(gè)功能“HDFS HA”當(dāng)前只能 實(shí)現(xiàn) 人工切 換 ,也就是 說(shuō) ,管理 員運(yùn) 行某個(gè)命令,使得acitve NN切 換 到standby NN上。以后將支持自 動(dòng) 切 換 ,也就是 說(shuō) , 監(jiān) 控模 塊 可 檢測(cè) 出active NN何 時(shí) 出 現(xiàn) 故障,并自 動(dòng) 將之切 換 到standby NN上, 這樣 可大大 較 小Hadoop集群 運(yùn)維 人 員 的工作量。具體參考:
http://s.apache.org/hdfs-autofailover
準(zhǔn)備
機(jī)器準(zhǔn)備
物理機(jī)器 總 共4臺(tái),想配置基于物理機(jī)的hadoop集群中包括 4 個(gè) 節(jié)點(diǎn): 1 個(gè) Master , 3 個(gè) Salve , 節(jié)點(diǎn)之間局域網(wǎng)連接,可以相互 ping 通
Ip分布 為
192.168.1.201 hadoop1
192.168.1.202 hadoop2
192.168.1.203 hadoop3
192.168.1.204 hadoop4
操作系 統(tǒng)為 CentOS 5.6 64bit
Master機(jī)器主要配置NameNode和JobTracker的角色, 負(fù)責(zé)總 管分布式數(shù)據(jù)和分解任 務(wù) 的 執(zhí) 行;3個(gè)Salve機(jī)器配置DataNode和TaskTracker的角色, 負(fù)責(zé) 分布式數(shù)據(jù)存 儲(chǔ) 以及任 務(wù) 的 執(zhí) 行。其 實(shí)應(yīng)該還應(yīng)該 有1個(gè)Master機(jī)器,用來(lái)作 為備 用,以防止Master服 務(wù) 器宕機(jī), 還 有一個(gè) 備 用 馬 上 啟 用。后 續(xù)經(jīng)驗(yàn)積 累一定 階 段后 補(bǔ) 上一臺(tái) 備 用Master機(jī)器。
創(chuàng)建賬戶
使用root登 陸 所有機(jī)器后,所有的機(jī)器都 創(chuàng)建 hadoop 用 戶
useradd hadoop
passwd hadoop
此 時(shí) 在 /home/ 下就會(huì)生成一個(gè) hadoop 目 錄 ,目 錄 路徑 為 /home/hadoop
創(chuàng)建相關(guān)的目錄
定 義 需要數(shù)據(jù)及目 錄 的存放路徑
定 義 代 碼及工具 存放的路徑
- mkdir -p /home/hadoop/source
- mkdir -p /home/hadoop/tools
定 義 數(shù)據(jù) 節(jié) 點(diǎn)存放的路徑到跟目 錄 下的hadoop文件夾, 這 里是數(shù)據(jù) 節(jié) 點(diǎn)存放目 錄 需要有足夠的空 間 存放
- mkdir -p /hadoop/hdfs
- mkdir -p /hadoop/tmp
- mkdir -p /hadoop/log
設(shè) 置可寫(xiě)權(quán)限
- chmod -R 777 /hadoop
定 義 java安裝程序路徑
- mkdir -p /usr/java
安裝
安裝JDK
http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u32-downloads-1594644.html
在以上 連接 下 載 linux 64 下的 jdk 的安裝文件: jdk-6u32-linux-x64.bin
1 ,將下 載好的 jdk-6u32-linux-x64.bin 通 過(guò) SSH 上 傳到 /usr/java 下
scp -r ./jdk-6u32-linux-x64.bin root@hadoop1:/usr/java
2 , 進(jìn)入 JDK 安裝目 錄 cd /usr/java 并且 執(zhí)行 chmod +x jdk-6u32-linux-x64.bin
3 , 執(zhí)行 ./jdk-6u32-linux-x64.bin
4 ,配置 環(huán)境變量,執(zhí)行 cd /etc 命令后 執(zhí)行 vi profile ,在行末尾添加
export JAVA_HOME=/usr/java/jdk1.6.0_32
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
5 , 執(zhí)行 chmod +x profile 將其 變成可執(zhí)行文件
6 , 執(zhí)行 source profile 使其配置立即生效
source /etc/profile
7 , 執(zhí)行 java -version 查看是否安裝成功
這個(gè)步驟所有機(jī)器都必須安裝
- [root@hadoop1 bin]# java -version
- java version "1.6.0_32"
- Java(TM) SE Runtime Environment (build 1.6.0_32-b05)
- Java HotSpot(TM) 64-Bit Server VM (build 20.7-b02, mixed mode)
修改主機(jī)名
修改主機(jī)名,所有 節(jié)點(diǎn)均一樣配置
1 , 連接到主節(jié)點(diǎn) 192.168.1.201 ,修改 network , 執(zhí)行 vim /etc/sysconfig/network ,修改 HOSTNAME=hadoop1
2 ,修改 hosts 文件, 執(zhí)行 cd /etc 命令后 執(zhí)行 vi hosts ,在行末尾添加 :
192.168.1.201 hadoop1
192.168.1.202 hadoop2
192.168.1.203 hadoop3
192.168.1.204 hadoop4
3 , 執(zhí)行 hostname hadoop1
4 , 執(zhí)行 exit 后重新 連接可看到主機(jī)名以修改 OK
其他 節(jié)點(diǎn) 也修改主機(jī)名后添加 Host, 或者 host 文件可以在后面 執(zhí)行 scp 覆蓋操作
配置SSH無(wú)密碼登陸
SSH 無(wú)密 碼原理簡(jiǎn)介 :
首先在 hadoop1 上生成一個(gè)密 鑰對(duì),包括一個(gè)公鑰和一個(gè)私鑰,并將公鑰復(fù)制到所有的 slave(hadoop2-hadoop4) 上。
然后當(dāng) master 通 過(guò) SSH 連接 slave 時(shí), slave 就會(huì)生成一個(gè)隨機(jī)數(shù)并用 master 的公 鑰對(duì)隨機(jī)數(shù)進(jìn)行加密,并發(fā)送給 master 。
最后 master 收到加密數(shù)之后再用私 鑰解密,并將解密數(shù)回傳給 slave , slave 確 認(rèn)解密數(shù)無(wú)誤之后就允許 master 不 輸入密碼進(jìn)行連接了
2 ,具體步 驟(在root用戶和hadoop用戶登陸情況下執(zhí)行)
1 、 執(zhí)行命令 ssh-keygen -t rsa 之后一路回 車,查看剛生成的無(wú)密碼鑰對(duì): cd .ssh 后 執(zhí)行 ll
2 、把 id_rsa.pub 追加到授權(quán)的 key 里面去。 執(zhí)行命令 cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
3 、修改權(quán)限: 執(zhí)行 chmod 600 ~/.ssh/authorized_keys
4 、確保 cat /etc/ssh/sshd_config 中存在如下內(nèi)容
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
如需修改, 則在修改后執(zhí)行重啟 SSH 服 務(wù)命令使其生效 :service sshd restart
5 、將公 鑰復(fù)制到所有的 slave 機(jī)器上 :scp ~/.ssh/id_rsa.pub 192.168.1.203 : ~/ 然后 輸入 yes ,最后 輸入 slave 機(jī)器的密 碼
6 、在 slave 機(jī)器上 創(chuàng)建 .ssh 文件夾 :mkdir ~/.ssh 然后 執(zhí)行 chmod 700 ~/.ssh (若文件夾以存在 則不需要?jiǎng)?chuàng)建)
7 、追加到授權(quán)文件 authorized_keys 執(zhí)行命令 :cat ~/id_rsa.pub >> ~/.ssh/authorized_keys 然后 執(zhí)行 chmod 600 ~/.ssh/authorized_keys
8 、重復(fù)第 4 步
9 、 驗(yàn)證命令 : 在 master 機(jī)器上 執(zhí)行 ssh 192.168.1.203 發(fā)現(xiàn)主機(jī)名由 hadoop1 變成 hadoop3 即成功,最后 刪除 id_rsa.pub 文件 :rm -r id_rsa.pub
按照以上步 驟分別配置 hadoop1,hadoop2,hadoop3,hadoop4 ,要求每個(gè)都可以無(wú)密 碼登錄
源碼下載
HADOOP 版本
最新版本 hadoop-2.0.0-alpha 安裝包 為 hadoop-2.0.0-alpha.tar.gz
下 載官網(wǎng)地址 :http://www.apache.org/dyn/closer.cgi/hadoop/common/
下 載到 /home/hadoop/source 目錄下
wget http://ftp.riken.jp/net/apache/hadoop/common/hadoop-2.0.0-alpha/hadoop-2.0.0-alpha.tar.gz
解壓目錄
tar zxvf hadoop-2.0.0-alpha.tar.gz
創(chuàng)建軟連接
cd /home/hadoop
ln -s /home/hadoop/source/hadoop-2.0.0-alpha/ ./hadoop
源碼配置修改
/etc/profile
配置 環(huán)境變量: vim /etc/profile
添加
- export HADOOP_DEV_HOME=/home/hadoop/hadoop
- export PATH=$PATH:$HADOOP_DEV_HOME/bin
- export PATH=$PATH:$HADOOP_DEV_HOME/sbin
- export HADOOP_MAPARED_HOME=${HADOOP_DEV_HOME}
- export HADOOP_COMMON_HOME=${HADOOP_DEV_HOME}
- export HADOOP_HDFS_HOME=${HADOOP_DEV_HOME}
- export YARN_HOME=${HADOOP_DEV_HOME}
- export HADOOP_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
- export HDFS_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
- export YARN_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
創(chuàng)建并配置hadoop-env.sh
- vim /usr/hadoop/hadoop-2.0.0-alpha/etc/hadoop/hadoop-env.sh
- 在末尾添加 export JAVA_HOME=/usr/java/jdk1.6.0_27
- core-site.xml
在 configuration 節(jié)點(diǎn) 里面添加屬性
- <property>
- <name>hadoop.tmp.dir</name>
- <value>/hadoop/tmp</value>
- <description>A base for other temporary directories.</description>
- </property>
- <property>
- <name>fs.default.name</name>
- <value>hdfs://192.168.1.201:9000</value>
- </property>
添加 httpfs 的 選項(xiàng)
- <property>
- <name>hadoop.proxyuser.root.hosts</name>
- <value>192.168.1.201</value>
- </property>
- <property>
- <name>hadoop.proxyuser.root.groups</name>
- <value>*</value>
- </property>
slave配置
vim /home/hadoop/hadoop/etc/hadoop/slaves
添加 slave 的 IP
192.168.1.202
192.168.1.203
192.168.1.204
配置hdfs-site.xml
- vim /home/hadoop/hadoop/etc/hadoop/hdfs-site.xml
添加 節(jié)點(diǎn)
- <property>
- <name>dfs.replication</name>
- <value>3</value>
- </property>
- <property>
- <name>dfs.namenode.name.dir</name>
- <value>file:/hadoop/hdfs/name</value>
- <final>true</final>
- </property>
- <property>
- <name>dfs.federation.nameservice.id</name>
- <value>ns1</value>
- </property>
- <property>
- <name>dfs.namenode.backup.address.ns1</name>
- <value>192.168.1.201:50100</value>
- </property>
- <property>
- <name>dfs.namenode.backup.http-address.ns1</name>
- <value>192.168.1.201:50105</value>
- </property>
- <property>
- <name>dfs.federation.nameservices</name>
- <value>ns1</value>
- </property>
- <property>
- <name>dfs.namenode.rpc-address.ns1</name>
- <value>192.168.1.201:9000</value>
- </property>
- <property>
- <name>dfs.namenode.rpc-address.ns2</name>
- <value>192.168.1.201:9000</value>
- </property>
- <property>
- <name>dfs.namenode.http-address.ns1</name>
- <value>192.168.1.201:23001</value>
- </property>
- <property>
- <name>dfs.namenode.http-address.ns2</name>
- <value>192.168.1.201:13001</value>
- </property>
- <property>
- <name>dfs.dataname.data.dir</name>
- <value>file:/hadoop/hdfs/data</value>
- <final>true</final>
- </property>
- <property>
- <name>dfs.namenode.secondary.http-address.ns1</name>
- <value>192.168.1.201:23002</value>
- </property>
- <property>
- <name>dfs.namenode.secondary.http-address.ns2</name>
- <value>192.168.1.201:23002</value>
- </property>
- <property>
- <name>dfs.namenode.secondary.http-address.ns1</name>
- <value>192.168.1.201:23003</value>
- </property>
- <property>
- <name>dfs.namenode.secondary.http-address.ns2</name>
- <value>192.168.1.201:23003</value>
- </property>
配置yarn-site.xml
添加 節(jié)點(diǎn)
- <property>
- <name>yarn.resourcemanager.address</name>
- <value>192.168.1.201:18040</value>
- </property>
- <property>
- <name>yarn.resourcemanager.scheduler.address</name>
- <value>192.168.1.201:18030</value>
- </property>
- <property>
- <name>yarn.resourcemanager.webapp.address</name>
- <value>192.168.1.201:18088</value>
- </property>
- <property>
- <name>yarn.resourcemanager.resource-tracker.address</name>
- <value>192.168.1.201:18025</value>
- </property>
- <property>
- <name>yarn.resourcemanager.admin.address</name>
- <value>192.168.1.201:18141</value>
- </property>
- <property>
- <name>yarn.nodemanager.aux-services</name>
- <value>mapreduce.shuffle</value>
- </property>
配置httpfs-site.xml
同步代碼到其他機(jī)器
1.同步配置代 碼
先在 slaves 的機(jī)器上也 創(chuàng) 建
mkdir -p /home/hadoop/source
部署hadoop代 碼 , 創(chuàng) 建 軟連接 ,然后只要同步修改 過(guò) 的etc/hadoop下的配置文件即可
2.同步 /etc/profile
3.同步 /etc/hosts
scp -r /etc/profile root@hadoop2:/etc/profile
scp -r /etc/hosts root@hadoop2:/etc/hosts
其他機(jī)器以此操作
Hadoop啟動(dòng)
格式化集群
hadoop namenode -format -clusterid clustername
啟動(dòng)hdfs
執(zhí)行
start-dfs.sh
開(kāi) 啟 hadoop dfs服 務(wù)
啟動(dòng)Yarn
開(kāi) 啟 yarn 資 源管理服 務(wù)
start-yarn.sh
啟動(dòng)httpfs
開(kāi) 啟 httpfs 服 務(wù)
httpfs.sh start
使得 對(duì)外 可以提高 http 的restful接口服 務(wù)
測(cè)試
安裝結(jié)果驗(yàn)證
驗(yàn)證hdfs
在各臺(tái)機(jī)器 執(zhí)行 jps 看 進(jìn)程 是否都已 經(jīng)啟動(dòng) 了
- [root@hadoop1 hadoop]# jps
- 7396 NameNode
- 24834 Bootstrap
- 7594 SecondaryNameNode
- 7681 ResourceManager
- 32261 Jps
- [root@hadoop2 ~]# jps
- 8966 Jps
- 31822 DataNode
- 31935 NodeManager
進(jìn)程啟動(dòng) 正常
驗(yàn)證 是否可以登 陸
- hadoop fs -ls hdfs://192.168.1.201:9000/
- hadoop fs -mkdir hdfs://192.168.1.201:9000/testfolder
- hadoop fs -copyFromLocal ./xxxx hdfs://192.168.1.201:9000/testfolder
- hadoop fs -ls hdfs://192.168.1.201:9000/ testfolder
看以上 執(zhí)行 是否正常
驗(yàn)證map/reduce
在 master1 上, 創(chuàng)建輸入目錄 :hadoop fs -mkdir hdfs://192.168.1.201:9000/input
將 /usr/hadoop/hadoop-2.0.1-alpha/ 目 錄下的所有 txt 文件復(fù)制到 hdfs 分布式文件系 統(tǒng)的目錄里,執(zhí)行以下命令
hadoop fs -put /usr/hadoop/hadoop-2.0.1-alpha/*.txt hdfs://192.168.1.201:9000/input
在 hadoop1 上, 執(zhí)行 HADOOP 自 帶的例子, wordcount 包,命令如下
- cd /usr/hadoop/hadoop-2.0.1-alpha/share/hadoop/mapreduce
- hadoop jar hadoop-mapreduce-examples-2.0.1-alpha.jar wordcount hdfs://192.168.1.201:9000/input hdfs://192.168.1.201:9000/output
- hadoop fs -put /usr/hadoop/hadoop-2.0.1-alpha/*.txt hdfs://192.168.1.201:9000/input
在 hadoop1 上, 查看結(jié)果命令如下 :
- [root@master1 hadoop]# hadoop fs -ls hdfs://192.168.1.201:9000/output
- Found 2 items
- -rw-r--r-- 2 root supergroup 0 2012-06-29 22:59 hdfs://192.168.1.201:9000/output/_SUCCESS
- -rw-r--r-- 2 root supergroup 8739 2012-06-29 22:59 hdfs://192.168.1.201:9000/output/part-r-00000
- [root@hadoop1 hadoop]# hadoop fs -cat hdfs://192.168.1.201:9000/output/part-r-00000
即可看到每個(gè) 單詞的數(shù)量
驗(yàn)證httpfs
HTTPFS操作:
OPEN,GETFILESTATUS,LISTSTATUS,GETHOMEDIRECTORY,GETCONTENTSUMMARY,GETFILECHECKSUM,GETDELEGATIONTOKEN,GETFILEBLOCKLOCATIONS,INSTRUMENTATION
GETHOMEDIRECTORY 路徑無(wú)關(guān),返回根 節(jié)點(diǎn)路徑
- http://192.168.1.201:14000/webhdfs/v1/yxq?op=GETHOMEDIRECTORY&user.name=root
- Path: "/user/root"
- http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=GETHOMEDIRECTORY&user.name=root
打開(kāi) / 下 載一個(gè)文件
http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=open&user.name=root
LISTSTATUS 現(xiàn)實(shí)目錄狀態(tài)
- http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0?op=LISTSTATUS&user.name=root
- http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=LISTSTATUS&user.name=root
GETFILESTATUS 顯示文件的狀態(tài)
- http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=GETFILESTATUS&user.name=root
如果是路徑 則現(xiàn)實(shí)路徑信息
- http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/?op=GETFILESTATUS&user.name=root
- http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=GETFILESTATUS&user.name=root
GETCONTENTSUMMARY 獲取路徑下的信息
- http://192.168.1.201:14000/webhdfs/v1/yxq?op=GETCONTENTSUMMARY&user.name=root
GETFILECHECKSUM 獲取文件的校驗(yàn)值
- http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=GETFILECHECKSUM&user.name=root
以下 實(shí)現(xiàn) 方法 還 有 錯(cuò)誤現(xiàn) 在:
- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- GETDELEGATIONTOKEN ERROR
- http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=GETDELEGATIONTOKEN&user.name=root
- GETFILEBLOCKLOCATIONS error
- http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=GETFILEBLOCKLOCATIONS&user.name=root
- INSTRUMENTATION error
- http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=INSTRUMENTATION&user.name=root
性能測(cè)試
使用內(nèi)部的 benchmark 測(cè)試 不同文件大小及不同append大小的寫(xiě)入情況
hadoop jar /home/hadoop/hadoop/bin/BitwareHadoopBenchmark.jar BitwareHadoopBenchmark hdfs://192.168.1.201:9000 /bitwaretest01/ 0 20 200 4 0
參考資料
http://qmkemail.iteye.com/blog/1612323
http://dongxicheng.org/mapreduce-nextgen/apache-hadoop-2-0-alpha/
原文鏈接:http://www.cnblogs.com/scotoma/archive/2012/09/18/2689902.html
【編輯推薦】
- 小白學(xué)數(shù)據(jù)分析:怎么做流失分析
- 小白學(xué)數(shù)據(jù)分析之K-means理論篇
- 小白學(xué)數(shù)據(jù)分析之從購(gòu)買(mǎi)記錄分析道具支付環(huán)節(jié)
- 小白學(xué)數(shù)據(jù)分析之付費(fèi)滲透率
- 小白學(xué)數(shù)據(jù)分析之Excel制作INFOGRAPHIC