Hadoop的安裝非常簡單,可以在官網上下載到最近的幾個版本,最好使用穩定版。本例在3台機器集群安裝。hadoop版本如下: Hadoop的安裝非常簡單,可以在官網上下載到最近的幾個版本,最好使用穩定版。本例在3台機器集群安裝。hadoop版本如下: Hadoop的安裝非常簡單,可以在官網上下載到最 ...
Hadoop的安裝非常簡單,可以在官網上下載到最近的幾個版本,最好使用穩定版。本例在3台機器集群安裝。hadoop版本如下:
工具/原料
- hadoop-0.20.2.tar.gz
- Ubuntu12.10
安裝步驟:
-
1
安裝ubuntu
Ubuntu12.10交換空間4G(記憶體2G)。具體安裝過程不贅述。
用戶名統一為:hadoop;
組群:hadoop;
機器名:namenode(主節點),datanode1(從節點1),datanode2(從節點2)。
-
2
在Ubuntu下創建hadoop用戶組和用戶(也可在安裝系統時通過界面配置)
1. 創建hadoop用戶組;
$ sudo addgroup hadoop
記下這裡為 hadoop 用戶設置的密碼,後面使用 hadoop 用戶登錄時需要用到。
2. 創建hadoop用戶;
$ sudo adduser -ingroup hadoop hadoop
3. 給hadoop用戶添加許可權,打開/etc/sudoers文件;
$ sudo gedit /etc/sudoers
4. 給hadoop用戶賦予root用戶同樣的許可權。
在root ALL=(ALL:ALL) ALL下添加如下內容:
hadoop ALL=(ALL:ALL) ALL
-
3
在Ubuntu下安裝JDK
配置環境變數:
$ sudo gedit /etc/profile
在文件的末尾加上如下內容,保存並關閉文件
# for java
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH
使設置生效:到此部JDK的配置就都完成了
$ source /etc/profile
為保證正確性,進行簡單的測試
$ java -version
輸出:
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0)
Java HotSpot(TM) Server VM
修改預設JDK:
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.8.0/bin/javac 300
sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/jdk1.8.0/bin/jar 300
以下兩句可選(最好執行):
sudo update-alternatives --config java
sudo update-alternatives --config javac
-
4
修改機器名(這步驟可以省略)
每當ubuntu安裝成功時機器名都預設為:ubuntu ,但為了以後集群中能夠容易分辨各台伺服器,需要給每台機器取個不同的名字。機器名由 /etc/hostname文件決定。
1. 打開/etc/hostname文件;
$ sudo gedit /etc/hostname
2. 將/etc/hostname文件中的ubuntu改為對應機器,如主節點中,修改為"namenode"。 重啟生效。
3.修改/etc/hosts文件
$ sudo gedit /etc/hosts
改為如下所示,並且將每台機器的IP設置為固定IP:
-
5
安裝ssh服務
這裡的ssh不是指三大框架:spring,struts,hibernate,而是一種遠程登錄協議。
ubuntu一般只是預設安裝了 ssh-agent, 可以用如下命令查看:
$ sudo ps -ef | grep ssh
如果只有 ssh-agent 就需要安裝openssh-server了。
$ sudo apt-get install ssh openssh-server
-
6
建立ssh無密碼登錄本機
首先要轉換成hadoop用戶,執行以下命令:
$ sudo su - hadoop
ssh生成密鑰有rsa和dsa兩種生成方式,預設情況下採用rsa方式。
1. 創建ssh-key,,這裡我們採用rsa方式;
$ ssh-keygen -t rsa -P ""
請註意, ssh-kengen 是用連字元連著的,千萬不要分開。問題如下:
按照您的步驟執行的過程中我在ssh -keygen -t rsa -P ""這邊發生的點小狀況輸入之後終端機顯示Bad escape character "ygen"(紅字部分就是問題所在,他將 ssh-keygen 分開了。)
(註:回車後會在~/.ssh/下生成兩個文件:id_rsa和id_rsa.pub這兩個文件是成對出現的)
2. 創建授權文件authorized_keys
進入~/.ssh/目錄下,發現開始是沒有authorized_keys文件的,可以使用以下兩種方法:
(1) 將id_rsa.pub追加到authorized_keys授權文件中;
$ cd ~/.ssh
$ cat id_rsa.pub >> authorized_keys
(2) 複製 id_rsa.pub 為 authorized_keys
$ cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
3. 登錄localhost;
$ ssh localhost
4. 執行退出命令(exit或CTRL+D);
-
7
安裝hadoop
1. 假設hadoop-0.20.2.tar.gz在桌面,將它複製到安裝目錄/usr/local/下;
$ sudo cp hadoop-0.20.2.tar.gz /usr/local/
2. 解壓hadoop-0.20.2.tar.gz;
$ cd /usr/local
$ sudo tar -zxvf hadoop-0.20.2.tar.gz
3. 將解壓出的文件夾改名為hadoop;
$ sudo mv hadoop-0.20.2 hadoop
4. 將該hadoop文件夾的屬主用戶設為hadoop,
$ sudo chown -R hadoop:hadoop hadoop
5. 打開hadoop/conf/hadoop-env.sh文件;
$ sudo gedit hadoop/conf/hadoop-env.sh
6. 配置conf/hadoop-env.sh(找到#exportJAVA_HOME=...,去掉#,然後加上本機jdk的路徑);
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0
7. 打開conf/core-site.xml文件;
$ sudo gedit hadoop/conf/core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://namenode:9000</value>
</property>
</configuration>
8. 打開conf/mapred-site.xml文件;
$ sudo gedit hadoop/conf/mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>namenode:9001</value>
</property>
</configuration>
9. 打開conf/hdfs-site.xml文件;
$ sudo gedit hadoop/conf/hdfs-site.xml
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/datalog1,/usr/local/hadoop/datalog2</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop/data1,/usr/local/hadoop/data2</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
註意:datalog1,datalog2,data1,data2文件夾最好事先建好。
10. 打開conf/masters文件,添加作為secondarynamenode的主機名.
11. 打開conf/slaves文件,添加作為slave的主機名,一行一個。
作者設置如下:
-
8
運行hadoop
1. 進入hadoop目錄下,格式化hdfs文件系統,初次運行hadoop時一定要有該操作,
$ cd /usr/local/hadoop/
$ bin/hadoop namenode -format
2. 啟動bin/start-all.sh
進入bin目錄下, $ ./start-all.sh 關閉:同目錄下./stop-all.sh
3. 檢測hadoop是否啟動成功
$ jps
4. Web查看
http://localhost:50030/ - 一個jobtracker的web訪問介面,為的是方便用戶查看相關信息。
類似的還有:
http://localhost:50070/ – web UI of theNameNode daemon
http://localhost:50030/ – web UI of theJobTracker daemon
http://localhost:50060/ – web UI of theTaskTracker daemon
註意事項
- 集群中所有機器的登錄用戶名和所屬組都要相同,本文用戶名為hadoop,組群也為Hadoop。
- 每台機器的IP設置為固定IP,主機名-ip需要在每一臺機器里修改對應的hosts文件。
- 註意代碼中的粗斜體為具體安裝目錄,要和實際目錄相同。