从零开始学习Hadoop--第1章 Hadoop的安装
Hadoop的安裝比較繁瑣,有如下幾個原因:其一,Hadoop有非常多的版本;其二,官方文檔不盡詳細,有時候更新脫節,Hadoop發展的太快了;其三,網上流傳的各種文檔,或者是根據某些需求定制,或者加入了不必須要的步驟,或者加入容易令人誤解的步驟。其實安裝是很重要的步驟,只有安裝好了,才能談及下一步。
在本書撰寫的時候,選用Hadoop的stable版安裝。
筆者的登錄用戶名是brian,大家可以根據自己的登錄名更改命令,后面凡是出現brian的地方,都用自己的登錄用戶名替換掉。
1. 操作系統
操作系統是Ubuntu10.04桌面版。
如果操作系統其他版本的Ubuntu,在圖形界面上會略有一點區別,但對安裝影響不大。不同發行版的Linux的安裝Hadoop的過程基本類似,沒太大的差別。
2.Hadoop的版本
Hadoop當前的stable版是1.2.1。
3.下載Hadoop
3.1在Hadoop的主頁上提供了多個下載鏈接。
http://www.apache.org/dyn/closer.cgi/hadoop/common/
3.2任選一個下載站點如下:
http://mirror.esocc.com/apache/hadoop/common/
3.3選擇stable版,其實stable版就是1.2.1版:
http://mirror.esocc.com/apache/hadoop/common/stable/
在這個目錄下有多個文件,是針對不同的linux發行版的,不需要全部下載。
3.4下載hadoop-1.2.1.tar.gz和hadoop-1.2.1.tar.gz.mds
打開命令終端,下文的命令都是在終端里執行,為方便起見,命令都用引號引起。
將stable版本的Hadoop的兩個文件下載到“~/setup/hadoop”目錄下,也就是”/home/brian/setup/hadoop”目錄,命令如下:
3.4.1“mkdir -p ~/setup/hadoop”
mkdir命令是創建新目錄。”-p”參數的意思是,假如hadoop目錄的上級目錄不存在,也創建上級目錄。在終端里執行“manmkdir”,可以看到對這個命令的更詳細的解釋,按一下q鍵重新返回終端。
在命令終端里,”~”表示當前登錄用戶的主目錄。比如說,在開機的時候,登錄用戶是brian,那么在命令終端里,”~”就表示目錄”/home/brian”,如果開機時候,登錄用戶是john,那么”~”就表示”/home/john”目錄。
3.4.2"cd ~/setup/hadoop"
cd就是changedirectory的縮寫,切換當前目錄。
3.4.3"wgethttp://mirror.esocc.com/apache/hadoop/common/stable/hadoop-1.2.1.tar.gz.mds"
wget是下載文件的命令行工具,”manwget”有詳細說明。
3.4.4"wgethttp://mirror.esocc.com/apache/hadoop/common/stable/hadoop-1.2.1.tar.gz"
3.4.5"md5sum hadoop-1.2.1.tar.gz"
md5sum命令,計算一個文件的md5碼。開源社區在提供源碼下載的時候,會同時提供下載文件的md5碼。md5碼是根據文件內容生成的32位字符串,不同的文件的md5碼是不同的,如果下載出錯,下載文件的md5碼跟正常文件的md5碼是不一樣的,由此檢測下載是否正常,只有在極其罕見的情況下,才會出現不同的文件有相同md5碼。hadoop-1.2.1.tar.gz是一個比較大的文件,需要檢查下載的文件是否完整,執行這個命令之后,會出現形如"8D79 04 80 56 17 C1 6C B2 27 D1 CC BF E9 38 5A hadoop-1.2.1.tar.gz"的字符串,前面的一串字符串就是32位的md5校驗碼。
3.4.6"cat hadoop-1.2.1.tar.gz.mds",
cat命令,cat是catenate的縮寫,在標準輸出上打印文件內容,通常標準輸出就是屏幕。這個命令會在屏幕上打印hadoop-1.2.1.tar.gz.mds的內容,也就是一些校驗碼,在里面找到"md5"這一行,如果跟md5sum出來的一致,則表明下載文件完整的,否則需要重新下載。
4. 安裝JavaJDK
4.1在這里有jdk 1.7的下載
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
如果是CPU是32位,選擇下載Linuxx86,如果CPU是64位的,選擇Linuxx64。一般來說,如果計算機是雙核的,肯定支持64位操作系統。或者可以運行”uname-a”命令看一下,在筆者的筆記本上運行這個命令結果如下:
Linuxbrian-i3 2.6.32-51-generic #113-Ubuntu SMP Wed Aug 21 19:46:35 UTC2013 x86_64 GNU/Linux
后面的x86_64表明系統是64位的。
在這個頁面,找”JavaSE Development Kit 7u40”,注意,這里有一個選項,必須選擇”AcceptLicense Agreement”,接受License才能下載。
下載的jdk1.7,存放到 “/home/brian/setup/java-jdk-1.7/”目錄。
下載的文件是”java-jdk-7u40-linux-i586.tar.gz”,javajdk的版本常常有更新,次版本號有可能會比40更高一點。
4.2"sudo su -"
切換到root用戶,參考”mansudo”。這個命令會切換到root用戶,也就是最高權限的用戶。因為后面要執行的jdk安裝操作是在/usr/local目錄下進行的,用root用戶更方便。
4.3"cd /usr/local/lib"
4.4"tar -zxvf/home/brian/setup/java-jdk-1.7/java-jdk-7u40-linux-i586.tar.gz"
tar是linux下的打包和解壓命令行工具,具體細節可以參考”mantar”。這個命令將java-jdk-7u40-linux-i586.tar.gz壓縮包解壓到當前目錄下。解壓縮完畢之后,執行"ls",能看到當前目錄下有一個新目錄叫"jdk1.7.0_40"
4.5配置環境變量:
4.5.1“gedit /etc/profile”
gedit是linux下類似Windoes的記事本的編輯器,文件/etc/profile是linux下的配置文件。本命令會打開這個配置文件,以備編輯。
4.5.2添加配置
在/etc/profile文件末尾加上如下的三行代碼:
exportJAVA_HOME=/usr/local/lib/jdk1.7.0_40
exportCLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
exportPATH=$PATH:$JAVA_HOME/bin
保存文件,然后退出。
Linux系統,開機后會自動執行/etc/profile配置文件。export命令設置或者顯示環境變量。上述三行代碼,分別設置了JAVA_HOME,CLASSPATH, PATH這三個環境變量。
4.5.3"chown root:root -R /usr/local/lib/jdk1.7.0_40"
chown命令,更改目錄或者文件的擁有者。這條命令將jdk1.7.0_40目錄的擁有者改為root組的root用戶。”-R”參數是遞歸的意思,將jdk1.7.0_40目錄下連同子目錄都進行更改。
4.5.4"chmod 755 -R /usr/local/lib/jdk1.7.0_40"
chmod命令,更改目錄和文件的模式。本命令將jdk1.7.0_40的模式改為擁有者可以讀寫執行,同組用戶和其他用戶可讀可執行不可寫。“-R”參數同上,也是遞歸的意思。
4.5.5"source /etc/profile"
如果更改了/etc/profile配置文件,它只會在新的終端里生效,現在正在使用的終端是不會生效的。如果想讓它在正使用的終端也生效,需要用source命令運行一下配置文件。這條命令會讓4.4.2的三個環境變量立即生效。這條命令也可以簡寫成”./etc/profile”。
4.5.6"java -version"
這條命令檢查jdk安裝是否成功。運行這條命令,只要沒有報錯就表明安裝成功了。
5.安裝hadoop
5.1"su brian"
su命令,切換用戶。安裝jdk用的是root用戶。現在切回brian用戶。
5.2"mkdir -p ~/usr/hadoop"
創建Hadoop的安裝目錄
5.3"cd ~/usr/hadoop"
5.4"tar -xvzf ~/setup/hadoop/hadoop-1.2.1.tar.gz"
解壓縮完畢后,就有目錄~/usr/hadoop/hadoop-1.2.1,這是hadoop的主目錄。
5.5配置hadoop,參考了http://hadoop.apache.org/docs/stable/single_node_setup.pdf。
按照偽分布式進行配置,也就是用一個機器同時運行NameNode,SecondaryNameNode, DataNode, JobTracker, TaskTracker 5個任務。
5.5.1配置文件在~/usr/hadoop/hadoop-1.2.1/conf/目錄下
5.5.2將core-site.xml文件內容修改成如下:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
5.5.3將mapred-site.xml文件內容修改如下:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
5.5.4將hdfs-site.xml文件內容修改如下:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
5.5.5在hadoop-env.sh文件里添加如下一條語句:
exportJAVA_HOME=/usr/local/lib/jdk1.7.0_40
6.安裝rsync和ssh
6.1"sudo apt-get install ssh rsync"
這條命令安裝ssh和rsync。ssh是一個很著名的安全外殼協議SecureShell Protocol。rsync是文件同步命令行工具。
6.2配置ssh免登錄
6.2.1"ssh-keygen -t dsa -f ~/.ssh/id_dsa"
執行這條命令生成ssh的公鑰/私鑰,執行過程中,會一些提示讓輸入字符,直接一路回車就可以。
6.2.2"cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys"
ssh進行遠程登錄的時候需要輸入密碼,如果用公鑰/私鑰方式,就不需要輸入密碼了。上述方式就是設置公鑰/私鑰登錄。
6.2.3 “ssh localhost”
第一次執行本命令,會出現一個提示,輸入”yes”然后回車即可。
7.啟動hadoop
7.1"cd ~/usr/hadoop/hadoop-1.2.1"
7.2"./bin/hadoop namenode -format"
格式化NameNode。
7.3"./bin/start-all.sh"
啟動所有節點,包括NameNode,SecondaryNameNode, JobTracker, TaskTracker, DataNode。
7.4“jps”
檢查各進程是否運行,這時,應該看到有6個java虛擬機的進程,分別是Jps,NameNode, SecondaryNameNode, DataNode, JobTracker,TaskTracker,看到6個是對的,表明啟動成功。如果提示”jps”沒安裝或者找不到,執行一次”source/etc/profile”即可。
8.測試hadoop
8.1"cd ~/usr/hadoop/hadoop-1.2.1"
8.2"./bin/hadoop fs -put README.txt readme.txt"
將當前目錄下的README.txt放到hadoop進行測試,這個README.txt是Hadoop的介紹文件,這里用它做測試。這條命令將README.txt文件復制到Hadoop的分布式文件系統HDFS,重命名為readme.txt。
8.3"./bin/hadoop jar hadoop-examples-1.2.1.jar wordcount readme.txtoutput"
運行hadoop的examples的wordcount,測試hadoop的執行。這條語句用Hadoop自帶的examples里的wordcount程序,對readme.txt進行處理,處理后的結果放到HDFS的output目錄。
8.4"./bin/hadoop fs -cat output/part-r-00000"
這條命令查看處理結果,part-r-00000文件存放wordcount的運行結果,cat命令將文件內容輸出到屏幕,顯示字符的統計結果。這是一個簡單的字符統計,wordcount只是做了簡單的處理,所以會看到單詞后面有標點符號。
9. 練習
筆者做一次完整的安裝是50分鐘左右,其中下載Hadoop安裝包和JavaJDK安裝包是半小時,操作部分用時20分鐘。新手第一次安裝,2~5個小時內完成都是正常的。建議將Hadoop的安裝過程按照上述流程走上三遍,熟悉每個步驟,然后不看流程憑記憶做出來,重復練習多次次,以加深印象。如果再有時間的話,可以逐個研究里面涉及到的各種命令,諸如wget,ssh, rsync等等。
?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的从零开始学习Hadoop--第1章 Hadoop的安装的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到自己相亲是怎么回事
- 下一篇: 将openstack的Token认证信息