基礎環境准備:
系統:(VirtualBox) ubuntu-12.04.2-desktop-i386.iso
hadoop版本:hadoop-0.20.203.0rc1.tar.gz
jdk版本:jdk-6u26-linux-i586.bin
安裝ssh服務
sudo apt-get install openssh-server
在Ubuntu下創建hadoop用戶組和用戶
$ sudo addgroup hadoop
$ sudo adduser --ingroup hadoop hadoop
編輯/etc/sudoers文件,為hadoop用戶添加權限
$ sudo vim /etc/sudoers
給hadoop用戶賦予root相同的權限
hadoop ALL=(ALL:ALL) ALL
================================================================================
hadoop實戰之安裝與單機模式
--------------------------------------------------------------------------------
1. 下載最新的hadoop安裝包,這里我使用的是hadoop-0.20.203.0rc1.tar.gz版本。
下載地址:http://archive.apache.org/dist/hadoop/core/hadoop-0.20.203.0/hadoop-0.20.203.0rc1.tar.gz
2. 解壓壓縮包到自己的目錄,比如解壓到/home/hadoop/data目錄下(tar –zxvf hadoop-0.20.203.orc1.tar.gz),為了后面說明方便,這里把/home/hadoop/data/hadoop-0.20.203.0定義為$HADOOP_HOME;
3. 修改$HADOOP_HOME/conf/hadoop-env.sh文件,將JAVA_HOME指定到正確的jdk路徑上(echo $JAVA_HOME查看);
4. 進入$HADOOP_HOME目錄下執行以下命令,將會得到hadoop命令的幫助;
$ bin/hadoop
5. 進入$HADOOP_HOME目錄下執行以下命令來測試安裝是否成功
$ mkdir input
$ cp conf/*.xml input
$ bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+'
$ cat output/*
輸出:
hadoop@ubuntu-V01:~/data/hadoop-0.20.203.0$ cat output/*
1 dfsadmin
經過上面的步驟,如果沒有出現錯誤就算安裝成功了。
================================================================================
hadoop實戰之偽分布式模式
--------------------------------------------------------------------------------
Hadoop可以在單節點上以所謂的偽分布式模式運行,此時每一個Hadoop守護進程都作為一個獨立的Java進程運行,這種運行方式的配置和操作如下:
關於hadoop的安裝和測試可以參考...
這里仍假定${HADOOP_HOME}為位置是/home/hadoop/data/hadoop-0.20.203.0
1. 修改hadoop配置
1.1 編輯${HADOOP_HOME}/conf/core-site.xml文件,內容修改如下:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
1.2 編輯${HADOOP_HOME}/conf/hdfs-site.xml文件,內如修改如下:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
1.3 編輯${HADOOP_HOME}/conf/mapred-site.xml文件,內如修改如下:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
2. 設置linux上ssh是用戶可以自動登錄
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
3. 格式化一個新的分布式文件系統:
$ bin/hadoop namenode -format
4. 執行hadoop
4.1 啟動hadoop后台daemon
$ bin/start-all.sh
啟動后可以通過網頁方式查看NameNode和JobTracker狀態
NameNode - http://localhost:50070/
JobTracker - http://localhost:50030/
4.2 復制文件到分布式文件系統上
$ bin/hadoop fs -put conf input
4.3 運行測試
$ bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+'
4.4 獲取測試程序的執行結果
$ bin/hadoop fs -cat output/*
輸出:
hadoop@ubuntu-V01:~/data/hadoop-0.20.203.0$ bin/hadoop fs -cat output/*
2 dfs.replication
1 dfs.server.namenode.
1 dfsadmin
4.5 停止hadoop后台daemon
$ bin/stop-all.sh
================================================================================
hadoop實戰之分布式模式
--------------------------------------------------------------------------------
1. 首先為hadoop的集群准備幾台機器,這里機器名如下:
ubuntu-V01(master)
ubuntu-V02(slave1)
ubuntu-V03(slave2)
2. 修改每個機器的/etc/hosts文件,確保每個機器都可以通過機器名互相訪問;
3. 在上面每個機器上的相同位置分別安裝hadoop,這里安裝的都是hadoop-0.20.203.0rc1.tar.gz包,並且假定安裝路徑都是/home/hadoop/data/hadoop-0.20.203.0;
4. 修改所有機器上的${HADOOP_HOME}/conf/hadoop-env.sh文件,將JAVA_HOME指定到正確的jdk路徑上;
5. 修改master機器上的${HADOOP_HOME}/conf/slaves文件,修改后文件內容如下:
ubuntu-V02
ubuntu-V03
6. 修改和部署配置文件
6.1 編輯${HADOOP_HOME}/conf/core-site.xml文件,內容修改如下:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://ubuntu-V01:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/data/hadoop-0.20.203.0/hadoop-${user.name}</value>
</property>
</configuration>
6.2 編輯${HADOOP_HOME}/conf/hdfs-site.xml文件,內如修改如下:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
6.3 編輯${HADOOP_HOME}/conf/mapred-site.xml文件,內如修改如下:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>ubuntu-V01:9001</value>
</property>
</configuration>
6.4 將以上三個配置文件分別部署在每個節點上;
7. 格式化一個新的分布式文件系統:
$ bin/hadoop namenode -format
8. 執行hadoop
8.1 啟動hadoop后台daemon
$ bin/start-all.sh
啟動后可以通過以下網頁方式查看NameNode和JobTracker狀態,此時可以從NameNode狀態網頁上看到"Live Nodes"的數量變成了兩個,此時表示已經部署成功
NameNode - http://localhost:50070/
JobTracker - http://localhost:50030/
8.2 運行測試
在hadoop默認提供了一些可以運行的測試工具在安裝包目錄下,下面就用這些測試程序來驗證分布式模式是否成功
8.2.1 測試一
運行下面的命令將從本地復制一個文件到hdfs文件系統的/test/目錄下
$ bin/hadoop fs -copyFromLocal /home/hadoop/data/hadoop-0.20.203.0/hadoop-examples-0.20.203.0.jar /test/hadoop-examples-0.20.203.0.jar
運行下面的命令將顯示hdfs文件系統上/test/目錄下的文件
$ bin/hadoop fs -ls /test/
輸出結果如下:
Found 1 items
-rw-r--r-- 1 hadoop supergroup 142469 2014-01-25 16:22 /test/hadoop-examples-0.20.203.0.jar
運行完上面的命令以后,可以通過http://localhost:50070/來查看hdfs上的文件,此時可以看到slave節點上已經有剛才命令上傳的文件存在了。
8.2.2 測試二
運行下面的命令
$ bin/hadoop jar hadoop-examples-0.20.203.0.jar sleep 300
然后訪問http://localhost:50030/,可以看到會有job在cluster里運行
8.2.3 測試三
首先准備數據,下面兩個命令是在hdfs上創建一個/test/input目錄,然后從本地復制一下文件到此目錄下
$ bin/hadoop fs -mkdir /test/input
$ bin/hadoop fs -copyFromLocal /home/hadoop/data/hadoop-0.20.203.0/conf/*.xml /test/input
運行測試來查找一些字符串
$ bin/hadoop jar hadoop-examples-*.jar grep /test/input /test/output 'dfs[a-z.]+'
查看測試結果
$ bin/hadoop fs -ls /test/output/
$ bin/hadoop fs -cat /test/output/part-00000
8.3 停止hadoop后台daemon
$ bin/stop-all.sh
================================================================================
hadoop實戰之動態添加節點
--------------------------------------------------------------------------------
假定已經有了一個hadoop cluster環境,並且已經有了兩個slave節點ubuntu-V02和ubuntu-V03,這里需要動態添加一個新的節點ubuntu-V04.
1. 修改${HADOOP_HOME}/conf/slaves文件,在其中添加一個新的slave節點,比如
ubuntu-V02
ubuntu-V03
ubuntu-V04(新節點)
2. 登錄到新添加的slave節點上,進入${HADOOP_HOME}目錄並運行以下命令:
$ bin/hadoop-daemon.sh start datanode
$ bin/hadoop-daemon.sh start tasktracker
3. 驗證添加是否成功
3.1 訪問http://localhost:50070/可以看到"Live Nodes"的數量就從2變成了3;
3.2 也可以通過以下命令行來驗證是否成功
$ bin/hadoop dfsadmin -report
================================================================================
備注:
進行分布式環境配置時,注意 /etc/hosts中ip與主機名的映射
如ubuntu-01機器上:
hadoop@ubuntu-V01:~$ cat /etc/hosts
127.0.0.1 localhost
192.168.1.109 ubuntu-V01
192.168.1.110 ubuntu-V02
192.168.1.111 ubuntu-V03
192.168.1.112 ubuntu-V04
參考:
http://hadoop.apache.org/docs/r0.19.1/cn/index.html
http://hadoop.apache.org/docs/r1.0.4/cn/index.html
http://blog.csdn.net/greatelite/article/details/17690239 Hadoop 2.2.0 分布式集群搭建
http://www.infoq.com/cn/articles/hadoop-intro 分布式計算開源框架Hadoop入門實踐(一)分布式計算開源框架Hadoop介紹
http://www.infoq.com/cn/articles/hadoop-config-tip 分布式計算開源框架Hadoop入門實踐(二)Hadoop中的集群配置和使用技巧
http://www.infoq.com/cn/articles/hadoop-process-develop 分布式計算開源框架Hadoop入門實踐(三)Hadoop基本流程與應用開發