Linux下Hadoop分布式配置和使用_第1頁(yè)
Linux下Hadoop分布式配置和使用_第2頁(yè)
Linux下Hadoop分布式配置和使用_第3頁(yè)
Linux下Hadoop分布式配置和使用_第4頁(yè)
Linux下Hadoop分布式配置和使用_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、linux 下 hadoop的分布式配置和使用1 linux 下 hadoop分布式配置和使用 詹坤林 2010年 5 月 目 錄 介紹 . 20 集群網(wǎng)絡(luò)環(huán)境介紹 . 21 /etc/hosts文件配置 . 22 ssh無(wú)密碼驗(yàn)證配置 . 32.1 選擇一:配置 namenode 無(wú)密碼登錄所有 datanode . 32.1 選擇二:配置所有節(jié)點(diǎn)之間ssh 無(wú)密碼驗(yàn)證 . 43 jdk安裝和 java環(huán)境變量配置 . 53.1 安裝 jdk 1.6 . 53.2 java 環(huán)境變量配置 . 54 hadoop集群配置 . 55 hadoop集群?jiǎn)?dòng) . 86 hadoop使用 . 106.

2、1 客戶機(jī)與 hdfs 進(jìn)行交互 . 106.1.1 客戶機(jī)配置 . 106.1.2 列出hdfs 根目錄 / 下的文件 . 116.1.3 列出當(dāng)前用戶主目錄下的文件. 116.1.4 hdfs用戶管理 . 116.1.5 復(fù)制本地?cái)?shù)據(jù)到 hdfs 中. 126.1.6 數(shù)據(jù)副本說(shuō)明 . 126.1.7 hadoop-site.xml參數(shù)說(shuō)明 . 136.1.8 hdfs中的路徑 . 136.1.8 hadoop 相關(guān)命令 . 146.2 客戶機(jī)提交作業(yè)到集群. 14linux 下 hadoop的分布式配置和使用2 6.2.1 客戶機(jī)配置 . 146.2.2 一個(gè)測(cè)試?yán)?wordcount

3、 . 156.2.3 編寫hadoop 應(yīng)用程序并在集群上運(yùn)行 . 166.2.4 三種模式下編譯運(yùn)行 hadoop 應(yīng)用程序 . 166.2.5 提交多個(gè)作業(yè)到集群 . 18附 程序 . 19介紹 這是本人在完全分布式環(huán)境下在cent-os中配置 hadoop-0.19.1 時(shí)的總結(jié)文檔,但該文檔也適合其他版本的linux系統(tǒng)和目前各版本的hadoop(hadoop-0.20之后的版本配置文件hadoop-site.xml 被拆分成了三個(gè) core-site.xml,hdfs-site.xml和 mapred-site.xml,這里會(huì)說(shuō)明 0.20 后的版本中如何配置這三個(gè)文件)。hadoo

4、p 配置建議所有配置文件中使用主機(jī)名進(jìn)行配置,并且機(jī)器上應(yīng)在防火墻中開啟相應(yīng)端口,并設(shè)置sshd服務(wù)為開機(jī)啟動(dòng),此外java環(huán)境變量可以在/etc/profile 中配置。0 集群網(wǎng)絡(luò)環(huán)境介紹 集群包含三個(gè)節(jié)點(diǎn): 1 個(gè) namenode ,2 個(gè) datanode,節(jié)點(diǎn)之間局域網(wǎng)連接,可以相互 ping 通。節(jié)點(diǎn) ip 地址和主機(jī)名分布如下:32 gc03vm12 namenode 42 gc04vm12 datanode01 44 gc04vm14 datanode02 所有節(jié)點(diǎn)均是 cent-os系統(tǒng),防火墻均禁用, sshd

5、服務(wù)均開啟并設(shè)置為開機(jī)啟動(dòng)。所有節(jié)點(diǎn)上均創(chuàng)建了一個(gè)hadoop用戶,用戶主目錄是 /home/hadoop。所有節(jié)點(diǎn)上均創(chuàng)建了一個(gè)目錄/usr/local/hadoop,并且擁有者是 hadoop用戶。因?yàn)樵撃夸浻糜诎惭bhadoop,用戶對(duì)其必須有 rwx 權(quán)限。 (一般做法是 root用戶在 /usr/local下創(chuàng)建 hadoop目錄, 并修改該目錄擁有者為nutch(chown r nutch:nutch /usr/local/hadoop)。1 /etc/hosts文件配置 (1)namenode 節(jié)點(diǎn)上編輯 /etc/hosts文件將所有節(jié)點(diǎn)的名字和ip 地址寫入其中,寫入如下內(nèi)容,

6、注意注釋掉行,保證內(nèi)容如下:32 gc03vm12 linux 下 hadoop的分布式配置和使用3 42 gc04vm12 44 gc04vm14 # centos54 localhost.localdomain localhost (2) 將 namenode上的/etc/hosts文件復(fù)制到所有數(shù)據(jù)節(jié)點(diǎn)上,操作步驟如下: root 用戶登錄 namenode ;執(zhí)行命令: scp /etc/hosts rootdatanode ip:/etc/hosts 2 ssh 無(wú)密碼驗(yàn)證配置 hado

7、op 需要使用 ssh協(xié)議, namenode將使用 ssh協(xié)議啟動(dòng) namenode和datanode 進(jìn)程,datanode 向 namenode傳遞心跳信息可能也是使用ssh協(xié)議,這是我認(rèn)為的,還沒(méi)有做深入了解,datanode 之間可能也需要使用ssh協(xié)議。假若是,則需要配置使得所有節(jié)點(diǎn)之間可以相互ssh無(wú)密碼登陸驗(yàn)證 。下面給出了兩種配置方式,用戶可以選擇第一種, 若實(shí)驗(yàn)中出現(xiàn)問(wèn)題可選擇第二種進(jìn)行嘗試。2.1 選擇一:配置namenode 無(wú)密碼登錄所有 datanode (0) 原理namenode 作為客戶端,要實(shí)現(xiàn)無(wú)密碼公鑰認(rèn)證,連接到服務(wù)端datanode 上時(shí),需要在 na

8、menode上生成一個(gè)密鑰對(duì),包括一個(gè)公鑰和一個(gè)私鑰,而后將公鑰復(fù)制到 datanode 上。當(dāng) namenode 通過(guò) ssh 連接 datanode 時(shí),datanode 就會(huì)生成一個(gè)隨機(jī)數(shù)并用namenode的公鑰對(duì)隨機(jī)數(shù)進(jìn)行加密,并發(fā)送給namenode 。namenode收到加密數(shù)之后再用私鑰進(jìn)行解密,并將解密數(shù)回傳給datanode,datanode 確認(rèn)解密數(shù)無(wú)誤之后就允許namenode進(jìn)行連接了。 這就是一個(gè)公鑰認(rèn)證過(guò)程,其間不需要用戶手工輸入密碼。重要過(guò)程是將客戶端namenode公鑰復(fù)制到 datanode 上。所有機(jī)器上生成密碼對(duì),所有節(jié)點(diǎn)上執(zhí)行以下命令: ssh-ke

9、ygen -t rsa generating public/private rsa key pair. enter file in which to save the key (/home/ hadoop /.ssh/id_rsa): 默認(rèn)路徑enter passphrase (empty for no passphrase): 回車,空密碼enter same passphrase again: your identification has been saved in /home/ hadoop /.ssh/id_rsa. your public key has been saved in

10、 /home/ hadoop /.ssh/id_rsa.pub. 這 將 在 /home/hadoop/.ssh/目 錄 下 生 成 一 個(gè) 私 鑰 id_rsa和 一 個(gè) 公鑰id_rsa.pub 。在 namenode節(jié)點(diǎn)上做如下配置cp id_rsa.pub authorized_keys namenode的公鑰使用ssh 協(xié)議將namenode 的公鑰信息authorized_keys復(fù)制到所有datanode的.ssh 目錄下。scp authorized_keys data節(jié)點(diǎn) ip 地址 :/home/hadoop/.ssh 這樣配置過(guò)后, namenode可以無(wú)密碼登錄所有da

11、tanode,可以通過(guò)命令linux 下 hadoop的分布式配置和使用4 “ssh 節(jié)點(diǎn) ip 地址”來(lái)驗(yàn)證。配置完畢,在 namenode上執(zhí)行“ssh 本機(jī),所有數(shù)據(jù)節(jié)點(diǎn)”命令,因?yàn)閟sh執(zhí)行一次之后將不會(huì)再詢問(wèn)。2.1 選擇二:配置所有節(jié)點(diǎn)之間ssh無(wú)密碼驗(yàn)證 (0) 原理節(jié)點(diǎn) a要實(shí)現(xiàn)無(wú)密碼公鑰認(rèn)證連接到節(jié)點(diǎn)b上時(shí),節(jié)點(diǎn) a是客戶端,節(jié)點(diǎn) b是服務(wù)端, 需要在客戶端 a上生成一個(gè)密鑰對(duì), 包括一個(gè)公鑰和一個(gè)私鑰, 而后將公鑰復(fù)制到服務(wù)端b上。當(dāng)客戶端 a通過(guò) ssh 連接服務(wù)端 b時(shí),服務(wù)端 b就會(huì)生成一個(gè)隨機(jī)數(shù)并用客戶端a的公鑰對(duì)隨機(jī)數(shù)進(jìn)行加密,并發(fā)送給客戶端a??蛻舳?a收到加密

12、數(shù)之后再用私鑰進(jìn)行解密,并將解密數(shù)回傳給b,b確認(rèn)解密數(shù)無(wú)誤之后就允許a進(jìn)行連接了。 這就是一個(gè)公鑰認(rèn)證過(guò)程, 其間不需要用戶手工輸入密碼。重要過(guò)程是將客戶端a公鑰復(fù)制到 b上。因此如果要實(shí)現(xiàn)所有節(jié)點(diǎn)之間無(wú)密碼公鑰認(rèn)證,則需要將所有節(jié)點(diǎn)的公鑰都復(fù)制到所有節(jié)點(diǎn)上。(1) 所有機(jī)器上生成密碼對(duì)(a) 所有節(jié)點(diǎn)用 hadoop 用戶登陸,并執(zhí)行以下命令,生成rsa 密鑰對(duì) : ssh-keygen -t rsa 這 將 在 /home/hadoop/.ssh/目 錄 下 生 成 一 個(gè) 私 鑰 id_rsa和 一 個(gè) 公鑰id_rsa.pub 。(b) 將所有 datanode 節(jié)點(diǎn)的公鑰id_rs

13、a.pub傳送到 namenode上: cp id_rsa.pub datanode01.id_rsa.pub scp datanode01.id_rsa.pub namenode節(jié)點(diǎn) ip 地址 :/home/hadoop/.ssh . cp id_rsa.pub datanoden.id_rsa.pub scp datanoden.id_rsa.pub namenode節(jié)點(diǎn) ip 地址 :/home/hadoop/.ssh (c)namenode 節(jié)點(diǎn)上綜合所有公鑰 ( 包括自身 ) 并傳送到所有節(jié)點(diǎn)上cp id_rsa.pub authorized_keys 這是 namenode自己的

14、公鑰cat datanode01.id_rsa.pub authorized_keys . cat datanode0n.id_rsa.pub authorized_keys 然后使用 ssh協(xié)議將所有公鑰信息authorized_keys復(fù)制到所有 datanode的.ssh 目錄下scp authorized_keys data節(jié)點(diǎn) ip 地址 :/home/hadoop/.ssh 這樣配置過(guò)后,所有節(jié)點(diǎn)之間可以相互ssh 無(wú)密碼登陸,可以通過(guò)命令“ssh 節(jié)點(diǎn) ip 地址”來(lái)驗(yàn)證。配置完畢,在 namenode上執(zhí)行“ssh 本機(jī),所有數(shù)據(jù)節(jié)點(diǎn)”命令,因?yàn)閟sh執(zhí)行一次之后將不會(huì)再詢問(wèn)。

15、linux 下 hadoop的分布式配置和使用5 3 jdk 安裝和 java 環(huán)境變量配置 3.1 安裝 jdk 1.6 root 用戶登陸,在 namenode 節(jié)點(diǎn)上新建文件夾 /usr/program ,下載 jdk安裝包jdk-6u13-linux-i586.bin, 復(fù)制到目錄/usr/ program 下,在命令行進(jìn)入該目錄,執(zhí)行命令“ ./ jdk-6u13-linux-i586.bin” ,命令運(yùn)行完畢,將在目錄下生成文件夾 jdk1.6.0_13 ,安裝完畢。安裝完成后,修改 /usr/program目錄擁有著為 nutch 用戶,chown -r nutch:nutch

16、/usr/program /usr/ program 目錄需要復(fù)制到所有數(shù)據(jù)節(jié)點(diǎn)上。3.2 java 環(huán)境變量配置 root 用戶登陸,命令行中執(zhí)行命令”vi /etc/profile”,并加入以下內(nèi)容,配置環(huán)境變量 ( 注意/etc/profile這個(gè)文件很重要,后面hadoop的配置還會(huì)用到)。# set java environment export java_home=/usr/program/jdk1.6.0_13/ export jre_home=/usr/program/jdk1.6.0_13/jre export classpath=.:$java_home/lib:$java

17、_home/jre/lib export path=$java_home/bin:$java_home/jre/bin:$path 保存并退出,執(zhí)行以下命令使配置生效chmod +x /etc/profile source /etc/profile 配置完畢,在命令行中使用命令”java -version” 可以判斷是否成功。在hadoop用戶下測(cè)試 java version,一樣成功。將 namenode 上的/etc/profile復(fù)制到所有數(shù)據(jù)節(jié)點(diǎn)上。操作步驟如下: root 用戶登錄 namenode ;執(zhí)行命令: scp /etc/profile rootdatanode ip:/e

18、tc/profile 4 hadoop 集群配置 在 namenode上執(zhí)行 : hadoop用戶登錄。linux 下 hadoop的分布式配置和使用6 下載 hadoop-0.19.1 ,將其解壓到 /usr/local/hadoop目錄下,解壓后目錄形式是 /usr/local/hadoop/hadoop-0.19.1。使用如下命令 : tar zxvf hadoop-0.19.1.tar.gz (1) 配置 hadoop的配置文件(a) 配置 hadoop-env.sh $ vi nutch-1.0/conf/hadoop-env.sh # set java environment ex

19、port java_home= /usr/program/jdk1.6.0_13/(b) 配置 conf/hadoop-site.xml hadoop配置參數(shù)的含義請(qǐng)參考conf/hadoop-default.xml。hadoop-0.20之 后 的 版 本 請(qǐng) 分 別 配 置core-site.xml, hdfs-site.xml 和mapred-site.xml 三個(gè)配置文件, 配置方法即將下面hadoop-site.xml文件中的三塊參數(shù)分別復(fù)制到三個(gè)文件當(dāng)中。 hdfs:/gc03vm12:9000 hdfs的 uri,文件系統(tǒng) :/namenode標(biāo)識(shí)

20、 : 端口號(hào) hadoop.tmp.dir /usr/local/hadoop/hadooptmp namenode上本地的hadoop 臨時(shí)文件夾 .dir /usr/local/hadoop/hdfs/name namenode上存儲(chǔ) hdfs 名字空間元數(shù)據(jù) dfs.data.dir /usr/local/hadoop/hdfs/data datanode上數(shù)據(jù)塊的物理存儲(chǔ)位置 linux 下 hadoop的分布式配置和使用7 dfs.replication 2 副本個(gè)數(shù),不配置默認(rèn)是3, 應(yīng)小于 datanode 機(jī)器數(shù)量 mapred.job.tracker gc03

21、vm12:9001 jobtracker標(biāo)識(shí) : 端口號(hào),不是uri mapred.local.dir /usr/local/hadoop/mapred/local tasktracker上執(zhí)行 mapreduce 程序時(shí)的本地目錄 mapred.system.dir /tmp/hadoop/mapred/system 這個(gè)是 hdfs 中的目錄,存儲(chǔ)執(zhí)行mr程序時(shí)的共享文件 (c) 配置 masters 文件, 加入 namenode 的主機(jī)名gc03vm12 (d) 配置 slaves 文件, 加入所有 datanode 的主機(jī)名gc04vm12 gc04vm14 (2) 復(fù)制配置好的各文

22、件到所有數(shù)據(jù)節(jié)點(diǎn)上。root 用戶下 : scp /etc/hosts 數(shù)據(jù)節(jié)點(diǎn) ip 地址:/etc/hosts scp /etc/profile 數(shù)據(jù)節(jié)點(diǎn) ip 地址:/etc/profile scp /usr/program 數(shù)據(jù)節(jié)點(diǎn) ip 地址:/usr/program nutch 用戶下 : scp /usr/local/hadoop 數(shù)據(jù)節(jié)點(diǎn) ip 地址: /usr/local/ linux 下 hadoop的分布式配置和使用8 5 hadoop 集群?jiǎn)?dòng) namenode 執(zhí)行:格式化 namenode ,格式化后在 namenode生成了 hdfs/name 文件夾bin/ha

23、doop namenode format 啟動(dòng) hadoop 所有進(jìn)程,bin/start-all.sh(或者先后執(zhí)行start-dfs.sh和 start-mapreduce.sh) ??梢酝ㄟ^(guò)以下啟動(dòng)日志看出,首先啟動(dòng)namenode,然后啟動(dòng) datanode1,datanode2,然后啟 動(dòng)secondarynamenode 。 再 啟 動(dòng)jobtracker,然 后 啟 動(dòng)tasktracker1,最 后 啟 動(dòng)tasktracker2。啟動(dòng) hadoop 成功后,在namenode中生成了hadooptmp 文件夾,在datanode 中生成了hdfs 文件夾和mapred 文件夾

24、。namenode上用 java 自帶的小工具jps 查看進(jìn)程# jps 8383 jobtracker 8733 jps 8312 secondarynamenode 8174 namenode 每個(gè) datanode 上查看進(jìn)程# jps 7636 datanode 7962 jps 7749 tasktracker 在 namenode上查看集群狀態(tài)bin/hadoop dfsadmin report configured capacity: 16030539776 (14.93 gb) present capacity: 7813902336 (7.28 gb) dfs remaini

25、ng: 7748620288 (7.22 gb) dfs used: 65282048 (62.26 mb) dfs used%: 0.84% - datanodes available: 2 (2 total, 0 dead) name: 42:50010 linux 下 hadoop的分布式配置和使用9 decommission status : normal configured capacity: 8015269888 (7.46 gb) dfs used: 32641024 (31.13 mb) non dfs used: 4364853248 (4.07 gb)

26、 dfs remaining: 3617775616(3.37 gb) dfs used%: 0.41% dfs remaining%: 45.14% last contact: thu may 13 06:17:57 cst 2010 name: 44:50010 decommission status : normal configured capacity: 8015269888 (7.46 gb) dfs used: 32641024 (31.13 mb) non dfs used: 3851784192 (3.59 gb) dfs remaining: 41308

27、44672(3.85 gb) dfs used%: 0.41% dfs remaining%: 51.54% last contact: thu may 13 06:17:59 cst 2010 hadoop 的 web 方式查看: http:/ namenode ip 地址:50070 hadoop查看工作情況 : http:/ namenode ip地址:50030 linux 下 hadoop的分布式配置和使用10 6 hadoop 使用 hadoop有兩個(gè)重要的模塊: mapreduce和 hdfs , hdfs是一個(gè)分布式文件系統(tǒng),用于存儲(chǔ)數(shù)據(jù),mapreduce 是一個(gè)編程框架,

28、hadoop 中運(yùn)行的程序均是mapreduce作業(yè),一個(gè)作業(yè)分為若干個(gè)map 任務(wù)和 reduce任務(wù)。6.1 客戶機(jī)與 hdfs 進(jìn)行交互 6.1.1 客戶機(jī)配置 可以查看 hdfs 中的數(shù)據(jù),向 hdfs 中寫入數(shù)據(jù)。(1) 選擇一臺(tái)機(jī)器,該機(jī)器可以是hadoop集群中的節(jié)點(diǎn),也可以是集群之外的機(jī)器。下面說(shuō)明在集群之外的客戶機(jī)上如何操作與hdfs 交互,集群之內(nèi)的節(jié)點(diǎn)省去配置過(guò)程。(2) 集群之外的機(jī)器請(qǐng)保證和hadoop 集群是網(wǎng)絡(luò)連通的,并且安裝了hadoop(解壓安裝包即可 ) 并在 conf/hadoop-site.xml中做了相關(guān)配置,至少配置如下: fs.default.na

29、me hdfs:/gc04vm12:9000 linux 下 hadoop的分布式配置和使用11 mapred.job.tracker gc03vm12:9001 jobtracker標(biāo)識(shí) : 端口號(hào),不是uri (3) 按照以上步驟配置完成后, 即可在客戶機(jī)的命令行中執(zhí)行命令, 查看 hdfs文件系統(tǒng)。6.1.2 列出 hdfs 根目錄/ 下的文件 root gc03vm12 nutch-1.0# bin/hadoop dfs -ls / found 3 items drwxr-xr-x - hadoop supergroup 0 2010-05-21 00:42 /tmp drwxr-xr

30、-x - hadoop supergroup 0 2010-05-21 00:53 /user drwxr-xr-x - hadoop supergroup 0 2010-05-21 00:55 /usr 第一列是目錄權(quán)限,第二列的hadoop 是目錄擁有者,第三列是組名,第4列是目錄大小 ( 單位是 b),第 5 列是目錄的絕對(duì)路徑。這里表示/ 目錄下有三個(gè)目錄。這里的用戶hadoop 是安裝 hadoop 的用戶,是超級(jí)用戶,相當(dāng)于linux操作系統(tǒng)的 root 用戶,組 supergroup 相當(dāng)于 root 用戶組。6.1.3 列出當(dāng)前用戶主目錄下的文件 hadoop默認(rèn)當(dāng)前 hdfs

31、 中的用戶就是當(dāng)前登錄客戶機(jī)的用戶。 root gc03vm12 nutch-1.0# bin/hadoop dfs ls ls: cannot access .: no such file or directory. 提示不能訪問(wèn)時(shí)因?yàn)閔dfs 中沒(méi)有 /user/root目錄。注意:這里的當(dāng)前用戶主目錄是客戶機(jī)中當(dāng)前登錄用戶的主目錄,即hdfs中的“/user/ 用戶名”目錄,由于當(dāng)前是 root 用戶登錄, 命令“bin/hadoop dfs ls ”訪問(wèn)的是 hdfs 中的“/user/root目錄” 。此 時(shí) 若/user/root目錄不存在,則會(huì)出現(xiàn)上面的提示。由于 hdfs 中不

32、存在 root 用戶,所以客戶機(jī)當(dāng)前登錄用戶無(wú)法向hdfs 中寫入數(shù)據(jù),因?yàn)閷?duì)hdfs 中的所有目錄沒(méi)有寫權(quán)限,只有r 讀權(quán)限。要使當(dāng)前用戶能夠向 hdfs 中寫入數(shù)據(jù),必須在hdfs 中創(chuàng)建 root 用戶并且創(chuàng)建相應(yīng)目錄,賦予相關(guān)權(quán)限??傊?, hdfs 的用戶權(quán)限和 linux 一樣重要。6.1.4 hdfs 用戶管理 創(chuàng)建 hdfs 用戶需要使用 hadoop用戶登錄客戶機(jī)器,并且執(zhí)行hadoop相關(guān)linux 下 hadoop的分布式配置和使用12 命令。由于 hadoop默認(rèn)當(dāng)前 hdfs中的用戶就是當(dāng)前登錄客戶機(jī)的用戶,所以當(dāng)前 hdfs 用戶即為 hadoop超級(jí)用戶 hadoo

33、p。hadoop似乎沒(méi)有提供創(chuàng)建用戶的命令,但要在hdfs 中創(chuàng)建用戶和用戶組可以這樣做。(i)hadoop 超級(jí)用戶 hadoop 在 hdfs 中創(chuàng)建目錄 /user/root,即 bin/hadoop dfs -mkdir /user/root (ii)更改/user/root目錄所屬用戶和組,即 bin/hadoop dfs -chown -r root : root/user/root,命令執(zhí)行完畢 hadoop將默認(rèn)創(chuàng)建有用戶root ,用戶組 root 。注意: 若此處沒(méi)有指定組,則默認(rèn)將root用戶分配到supergroup組,bin/hadoop dfs -chown -r

34、root /user/root (ii)這樣就相當(dāng)于在hdfs 中創(chuàng)建了用戶 root ,組 root 。并且當(dāng)前客戶機(jī)的root 用戶對(duì) hdfs 中的/user/root目錄進(jìn)行 rwx。6.1.5 復(fù)制本地?cái)?shù)據(jù)到hdfs 中 root gc03vm12 nutch-1.0# bin/hadoop dfs copyfromlocal /local/x /user/root/ 執(zhí)行以上命令即能將本地?cái)?shù)據(jù)上傳到hdfs中,上傳的文件將會(huì)被分塊,并且 數(shù) 據(jù) 塊 將 物 理 存 儲(chǔ) 在 集 群 數(shù) 據(jù) 節(jié) 點(diǎn) 的hadoop-site.xml文 件 中 的dfs.data.dir參數(shù)指定的目錄下

35、,用戶可以登錄數(shù)據(jù)節(jié)點(diǎn)查看相應(yīng)數(shù)據(jù)塊。hdfs 中一個(gè)文件對(duì)應(yīng)若干數(shù)據(jù)塊,如果文件小于塊大小( 默認(rèn) 64m),則將會(huì)存儲(chǔ)到一個(gè)塊中,塊大小即文件大小。若文件很大,則分為多個(gè)塊存儲(chǔ)。6.1.6 數(shù)據(jù)副本說(shuō)明 hadoop-site.xml文件中的dfs.replication參數(shù)指定了數(shù)據(jù)塊的副本數(shù)量。 一個(gè)文件被分為若干數(shù)據(jù)塊, 其所有數(shù)據(jù)塊副本的名字和元數(shù)據(jù)都是一樣的,例如下圖顯示了上傳一個(gè)目錄( 包含兩個(gè)小文件 ) 到 hdfs 后數(shù)據(jù)節(jié)點(diǎn)中數(shù)據(jù)塊情linux 下 hadoop的分布式配置和使用13 況:圖 節(jié)點(diǎn)一上的副本圖 節(jié)點(diǎn)二上的副本6.1.7 hadoop-site.xml參數(shù)說(shuō)

36、明 (1) hadoop.tmp.dir 該參數(shù)默認(rèn)值是“ /tmp/hadoop- 當(dāng)前登錄用戶名 ” 。它是本地路徑, 當(dāng)?shù)谝淮螁?dòng) hadoop集群進(jìn)程時(shí)在 namenode節(jié)點(diǎn)的本地創(chuàng)建該目錄,其作用是存儲(chǔ)相關(guān)臨時(shí)文件。(2)mapred.system.dir 該參數(shù)默認(rèn)值是 $hadoop.tmp.dir/mapred/system,它所表示的目錄是hdfs 中的路徑,是相對(duì)于的路徑,即它在 hdfs 中的絕對(duì)路徑是$/$mapred.system.dir。該參數(shù)指定的目錄的作用是當(dāng)作業(yè)運(yùn)行時(shí),存儲(chǔ)作業(yè)相關(guān)文件,供tas

37、ktracker節(jié)點(diǎn)共享。一般 hdfs 系統(tǒng)中 / 目錄下可以看到該參數(shù)指定的目錄,如nutchgc04vm12 nutch-1.0$ bin/hadoop dfs -lsr / drwxr-xr-x - nutch supergroup /tmp drwxr-xr-x - nutch supergroup /tmp/hadoop drwxr-xr-x - nutch supergroup /tmp/hadoop/mapred drwx-wx-wx - nutch supergroup /tmp/hadoop/mapred/system ( 即此) 其他參數(shù)參見(jiàn) hadoop-default

38、.xml中的說(shuō)明。6.1.8 hdfs 中的路徑 首先請(qǐng)查閱資料, 把握 uri的概念。在 hdfs 中,例如下面這些形式均是uri(注意不是 url , uri概念比 url更廣) 。 例如 file:/, hdfs:/x/y/z, /x/y/z,z。linux 下 hadoop的分布式配置和使用14 hdfs 路徑應(yīng)該可以分為三種:絕對(duì)uri路徑,即hdfs:/namenode:端口/xxxx/xxxx 這種形式; hdfs 絕對(duì)路徑,例如/user 或者/user,注意使用 / 或者/ 表示根目錄,而不能使用 / ;hdfs 相對(duì)路徑,例如 x,此路徑往往是相對(duì)于當(dāng)前用戶主目錄 /use

39、r/ 用戶名而言,例如 x 對(duì)應(yīng)的 hdfs 絕對(duì)路徑是 /user/hadoop/x。hadoop-site.xml中參數(shù) mapred.system.dir的值所指的路徑是 hdfs 的絕對(duì)路 徑 , 它 和 參 數(shù) 一 起 構(gòu) 成 了 絕 對(duì) uri, 例 如 參 數(shù) 值/tmp/hadoop/mapred/system最終將對(duì)應(yīng)的是絕對(duì)uri:hdfs:/gc04vm12:9000/tmp/hadoop/mapred/system 無(wú)論使用何種路徑,均能查看hdfs 中的數(shù)據(jù),例如:6.1.8 hadoop 相關(guān)命令 hadoop提供一系列的命令,在 bi

40、n 中, 例如 bin/hadoop fs x ; bin/hadoop namenode x等等。其中有些命令只能在namenode 上執(zhí)行。bin下 還 有 一 些 控 制 腳 本 , 例 如start-all.sh、 start-mapred.sh、start-dfs.sh等等。 數(shù)據(jù)節(jié)點(diǎn)上運(yùn)行 start-all.sh將會(huì)只啟動(dòng)本節(jié)點(diǎn)上的進(jìn)程,如 datanode、tasktracker。6.2 客戶機(jī)提交作業(yè)到集群 6.2.1 客戶機(jī)配置 可以在客戶機(jī)上向hadoop集群提交作業(yè)。(1) 選擇一臺(tái)機(jī)器,該機(jī)器可以是hadoop集群中的節(jié)點(diǎn),也可以是集群之外的機(jī)器。下面說(shuō)明在集群之外的

41、客戶機(jī)上如何向hadoop 提交作業(yè),集群之內(nèi)的節(jié)點(diǎn)省去配置過(guò)程。linux 下 hadoop的分布式配置和使用15 (2) 集群之外的機(jī)器請(qǐng)保證和hadoop 集群是網(wǎng)絡(luò)連通的,并且安裝了hadoop(解壓安裝包即可 ) 并在 conf/hadoop-site.xml中做了相關(guān)配置,至少配置如下: hdfs:/gc04vm12:9000 mapred.job.tracker gc03vm12:9001 jobtracker標(biāo)識(shí) : 端口號(hào),不是uri (3) 按照以上步驟配置完成后, 即可在客戶機(jī)的命令行中執(zhí)行命令, 向 hadoop提交作業(yè)。6.2.2 一個(gè)

42、測(cè)試?yán)觲ordcount 計(jì)算輸入文本中詞語(yǔ)數(shù)量的程序wordcount在 hadoop主目錄下的 java 程序包 hadoop-0.19.1-examples.jar中,執(zhí)行步驟如下:(1) 上傳數(shù)據(jù)到 hdfs 中bin/hadoop fs -mkdir mytest bin/hadoop fs -copyfromlocal /home/hadoop/mytest/input1 bin/hadoop fs -copyfromlocal /home/hadoop/mytest/input2 (2) 執(zhí)行命令,提交作業(yè)bin/hadoop jar hadoop-0.19.1-example

43、s.jar wordcount mytest/* output 命令執(zhí)行完畢,在頁(yè)面http:/namenodeip:50030/中能夠看到作業(yè)執(zhí)行情況。(3) 程序輸出程序?qū)⒔y(tǒng)計(jì)mytest 目錄下的所有文本文件中詞語(yǔ)的數(shù)量,并將結(jié)果輸出到hdfs 的 output 目錄下的 part-00000 文件中。這里的 output 目錄是程序生成的linux 下 hadoop的分布式配置和使用16 目錄,程序運(yùn)行前不可存在。執(zhí)行以下命令可以查看結(jié)果。bin/hadoop fs -cat output/part-00000 6.2.3 編寫 hadoop應(yīng)用程序并在集群上運(yùn)行 這里介紹一個(gè)向hdf

44、s中寫入數(shù)據(jù)的例子(注意不是mr程序) 來(lái)說(shuō)明編寫hadoop應(yīng)用程序并放到集群上運(yùn)行的步驟。(1) 客戶端編寫應(yīng)用程序并編譯運(yùn)行,進(jìn)行測(cè)試。編寫程序一般需要引入hadoop相關(guān) jar 包或者直接使用 hadoop整個(gè)程序包,相關(guān)代碼見(jiàn)附錄。(2) 打包應(yīng)用程序在eclipse中 打 包 成jar文 件 存 儲(chǔ) 到 相 應(yīng) 目 錄 下 , 例 如 /hadoop/ jarseclipse/dfsoperator.jar。(3) 上傳數(shù)據(jù)到 hdfs bin/hadoop fs copyfromlocal local dst 本實(shí)例中不需要上傳數(shù)據(jù),一般的程序都涉及輸入數(shù)據(jù)。(4) 執(zhí)行應(yīng)用程

45、序bin/hadoop jar x.jar jar包中主類名 輸入?yún)?shù) 輸出參數(shù) 這里使用的命令是 : bin/hadoop jar /jarseclipse/dfsoperator.jar dfsoperator 6.2.4 三種模式下編譯運(yùn)行hadoop應(yīng)用程序 集群是完全分布式環(huán)境, hadoop的 mr程序?qū)⒁宰鳂I(yè)的形式提交到集群中運(yùn)行。我們?cè)诳蛻舳司帉慼adoop應(yīng)用程序時(shí)一般是在偽分布式模式或單擊模式下進(jìn)行編譯,然后將編譯無(wú)誤的程序打成包提交到hadoop集群中,當(dāng)然我們?nèi)钥芍苯幼尦绦蛟?hadoop集群中編譯。(1) 讓 hadoop應(yīng)用程序在直接在集群中編譯將 hadoop整個(gè)

46、包導(dǎo)入 eclipse中,配置 hadoop-site.xml文件如下: hdfs:/gc04vm12:9000 linux 下 hadoop的分布式配置和使用17 mapred.job.tracker gc03vm12:9001 jobtracker標(biāo)識(shí) : 端口號(hào),不是uri 編寫應(yīng)用程序,編譯運(yùn)行,此時(shí)程序?qū)⒅苯釉趆adoop集群中運(yùn)行。此種方法在開發(fā)中不建議使用,以防止破壞集群環(huán)境。(2) 單機(jī)模式下編譯 hadoop應(yīng)用程序?qū)?hadoop 整個(gè)包導(dǎo)入 eclipse中, hadoop-site.xml文件不做任何配置,保留默認(rèn)的空配置。單機(jī)模式下運(yùn)行

47、 hadoop應(yīng)用程序時(shí),程序使用的是本地文件系統(tǒng)。(3) 偽分布式模式下編譯hadoop應(yīng)用程序在單機(jī)上配置 hadoop偽分布式模式,配置文件hadoop-site.xml如下: hdfs:/localhost:9000 hdfs的 uri,文件系統(tǒng) :/namenode標(biāo)識(shí) : 端口號(hào) dfs.replication 1 副本個(gè)數(shù),不配置默認(rèn)是3, 應(yīng)小于 datanode 機(jī)器數(shù)量 linux 下 hadoop的分布式配置和使用18 mapred.job.tracker localhost:9001 jobtracker標(biāo)識(shí) : 端口號(hào),不是uri 使用

48、 bin/start-all.sh啟動(dòng)偽分布式集群。將 hadoop 整個(gè)包導(dǎo)入 eclipse中,并將 hadoop-site.xml文件配置為以上一樣的內(nèi)容。(或者直接將上面的hadoop目錄導(dǎo)入 eclipse中 )。編寫應(yīng)用程序并運(yùn)行,此時(shí)程序?qū)⒃趥畏植际侥J较逻\(yùn)行,使用的是hdfs 。6.2.5 提交多個(gè)作業(yè)到集群 提交一個(gè)后, 可以繼續(xù)提交, 這樣集群中將有多個(gè)作業(yè), hadoop有一個(gè)作業(yè)隊(duì)列,可以在以下網(wǎng)址中查看。42:50030/jobqueue_details.jsp?queuename=default涉及多個(gè)作業(yè)時(shí), hadoop將對(duì)作業(yè)進(jìn)行調(diào)度, 默認(rèn)調(diào)度方式是基于優(yōu)先級(jí)的fifo方式。更改作業(yè)優(yōu)先級(jí)命令作業(yè)優(yōu)先級(jí)有五種: very_high high normal low very_low 例如:bin/hadoop job -set-priority job_201005210042_0074 very_high linux 下 hadoop的分布式配置和使用19 附 程序 apache所有開源項(xiàng)目下載地址是:/dist/import java.io.i

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論