Hadoop1.2.1偽分佈模式安裝教程

來源:互聯網
上載者:User

一、硬體環境

Hadoop搭建系統內容:一台Linux ubuntu-13.04-desktop-i386系統,既做Namenode,又做Datanode。 (ubuntu系統搭建在硬體虛擬機器上)

Hadoop安裝目標版本:Hadoop1.2.1

jdk安裝版本:jdk-7u40-linux-i586

Pig安裝版本:pig-0.11.1

硬體虛擬機器搭設環境:IBM塔式伺服器x3500M3 MT:7380

eclipse安裝版本:eclipse-standard-kepler-SR1-linux-gtk

二、軟體環境準備

2.1 Hadoop

Hadoop HTTP://www.aliyun.com/zixun/aggregation/16920.html">Release 1.2.1(stable)版本,下載連結:HTTP:// mirror.nexcess.net/apache/hadoop/common/hadoop-1.2.1/,選擇hadoop-1.2.1-bin.tar.gz檔下載。

2.2 JAVA

JAVA使用的jdk1.7版本,當然可以使用1.6的,下載連結:HTTP://www.oracle.com/technetwork/java/javase/downloads/ jdk7-downloads-1880260.html,選擇Linux x86的 jdk-7u40-linux-i586.tar.gz版本下載(因為我的Linux機器是32位的)。 如果Linux機器是64的就必須選擇64位的下載,不同的機器必須要配置不同的jdk版本。

2.3 Eclipse

Eclipse選擇Linux 32位下載:HTTPs://www.eclipse.org/downloads/

三、安裝步驟

3.1 添加一個專門為hadoop使用的使用者

命令列輸入:

sudo addgroup hadoop

sudo adduser -ingroup hadoop hadoop

設置hadoop使用者的sudo許可權:

sudo vim /etc/sudoers

在root ALL=(ALL:ALL) ALL下面加一行hadoop ALL=(ALL:ALL) ALL

切換到hadoop使用者:su hadoop

3.2 創建目錄並解壓安裝包

建立目錄

sudo mkdir /home/hadoop/install

sudo mkdir /home/hadoop/software/hadoop /*該目錄存放hadoop程式檔*/

sudo mkdir /home/hadoop/software/java /*該目錄存放jdk程式檔。 */

sudo mkdir /home/hadoop/software/eclipse /*該目錄存放eclipse程式檔。 */

解壓安裝壓縮包

sudo tar -xzvf '/home/master/下載/jdk-7u40-linux-i586.tar.gz' -C /home/hadoop/software/java/

sudo tar -xzvf '/home/master/下載/hadoop-1.2.1-bin.tar.gz' -C /home/hadoop/software/hadoop/

3.3 配置Hadoop

配置JAVA環境

添加JAVA_HOME,CLASSPATH環境變數。 使用sudo vi /etc/profile命令編輯profile檔,在檔末尾加上以下內容:

HADOOP_INSTALL=/home/hadoop/software/hadoop/hadoop-1.2.1/

JAVA_HOME=/home/hadoop/software/java/jdk1.7.0_40

PATH=$JAVA_HOME/bin:$HADOOP_INSTALL/bin:$PATH

CLASSPATH=$JAVA_HOME/lib

export JAVA_HOME PATH CLASSPATH HADOOP_INSTALL

然後保存退出,使用source /etc/profile使剛剛的更改立即生效。

然後使用java –version命令,查看是否配置成功,如果成功會出現以下資訊:

java version 「1.7.0_40″

JAVA(TM) SE Runtime Environment (build 1.7.0_40-b43)

JAVA HotSpot(TM) Client VM (build 24.0-b56, mixed mode)

配置SSH環境

使用以下命令設置ssh無密碼連接:

ssh-keygen

cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys

ssh localhost

最後一行代碼為測試使用。 首次運行會提示是否繼續,輸入yes,回車,如果不要求輸入密碼,就表示成功了。

配置hadoop環境

通過cd /home/hadoop/software/hadoop/hadoop-1.2.1/conf進到conf這個目錄,看到haddoop-env.sh,core-site.xml,mapred-site.xml, hdfs-site.xml這四個檔以及需要在完全分佈模式配置的slaves和masters檔。

1.配置hadoop-env.sh:找到JAVA_HOME關鍵字所在的行,把前面的#號去掉,然後填寫實際的JAVA_HOME位址:

export  JAVA_HOME=/home/hadoop/software/java/jdk1.7.0_40

2.配置core-site.xml:用vi core-site.xml打開core-site.xml檔,然後在configuration標籤中加入以下內容:

<property>

<name>fs.default.name</name>

<value>hdfs://localhost:9000</value>

</propety>

<!—fs.default.name:用來配置namenode,指定HDFS檔案系統的URL,通過該URL我們可以訪問檔案系統的內容,也可以把localhost換成本機IP位址;如果是完全分佈模式, 則必須把localhost改為實際namenode機器的IP位址;如果不寫埠,則使用預設埠8020。 –>

<property>

<name>hadoop.tmp.dir</name>

<value>/home/hadoop/tmp/hadoop_tmp</value>

</property>

<!– hadoop.tmp.dir:Hadoop的預設臨時路徑,這個最好配置,如果在新增節點或者其他情況下莫名其妙的DataNode啟動不了,就刪除此檔中的tmp目錄即可。 不過如果刪除了NameNode機器的此目錄,那麼就需要重新執行NameNode格式化的命令。 該目錄必須預先手工創建。 –>

3.配置hdfs-site.xml:在configuration標籤中加入以下內容,所有不存在的目錄都要預先創建:

<property>

<name>dfs.data.dir</name>

<value>/home/hadoop/appdata/hadoopdata</value>

</property>

<!–配置HDFS存儲目錄,資料存放目錄,用於datanode存放資料–>

<property>

<name>dfs.name.dir</name>

<value>/home/hadoop/appdata/hadoopname</value>

</property>

<!—用來存儲namenode的檔案系統中繼資料,包括編輯日誌和檔案系統映射,如果更換位址的話,則需要重新使用hadoop namenode –format命令格式化namenode–>

<property>

<name>dfs.replication</name>

<value>1</value>

</proerty>

<!—用來設置檔案系統冗余備份數量,因為只有一個節點,所有設置為1,系統預設數量為3–>

4.配置mapred-site.xml:在configuration標籤中加入以下內容:

<property>

<name>mapred.job.tracker</name>

<value>localhost:9001</value>

</property>

<!—該項配置用來配置jobtracker節點,localhost也可以換成本機的IP位址;真實分佈模式下注意更改成實際jobtracker機器的IP位址–>

四、啟動hadoop

4.1 測試hadoop配置是否成功

通過以下命令,當我們看到hadoop的版本時則表明配置無誤。

hadoop version

4.2 格式化namenode

cd /home/hadoop/software/hadoop/hadoop-1.2.1/bin

./hadoop namenode –format

4.3 啟動hadoop進程

cd /home/hadoop/software/hadoop/hadoop-1.2.1/bin

./start-all.sh

通過java的jps命令來查看進程是否啟動成功,成功啟動SecondaryNamenode,JobTracker,NameNode,DataNode,TraskTracker五個進程則OK。

如果有一個進程沒有啟動成功,就表示整個集群沒有正常工作,進入/home/hadoop/software/hadoop/hadoop-1.2.1/libexec/.. /logs/目錄下可以查看失敗日記。

4.4 從瀏覽器查看hadoop資訊

查看jobtracker資訊:

可以從本機或者其他機器的瀏覽器訪問hadoop,輸入如下網址:HTTP://10.1.151.168:50030/jobtracker.jsp,其中10.1.151.168為我該機器的IP位址。

查看namenode資訊:

HTTP://10.1.151.168:50070/dfshealth.jsp

查看trasktracker資訊:

HTTP://10.1.151.168:50060/tasktracker.jsp

錯誤筆記

password:localhost:permission denied,please try again

碰到這種情況大都是沒有給hadoop使用者賦予sudo許可權所致。 所以打開你的/etc/sudoers加上hadoop ALL=(ALL:ALL) ALL吧。

Tasktracker無法正常啟動

通過查找logs中tasktracker的錯誤日誌發現其中有一個warn是相應目錄下temp/hadoop_tmp.mapred/local/檔的許可權被設置成not writable了。 於是通過修改許可權解決了上述的問題,命令如下:

sudo chmod 777 /home/hadoop/temp/hadoop_tmp.mapred/local/

每次開機都需要把/etc/profile重新source一遍,不然就顯示沒裝jdk

這個問題還是沒有解決,因為還沒找到原因所在。 怎麼辦呢,算了,每次繁瑣一點source一遍吧,暫時先這樣了。

SafeMode: ON – HDFS unavailable,導致nodes顯示為0,沒有namenode啟動。

經過查詢是hdfs-site.xml配置中的dfs.name.dir的value所在的目錄出了問題,顯示是:xxx is in an inconsistent state: storage directory does not exist o r is not accessible.其中xxx代表那個目錄,不斷的重啟與格式化總是不能解決這個問題,刪不刪除這個目錄也都無濟於事。 是的,我瘋了,你看到我瘋狂的眼神了麼? 終於,突然想到了chown的作用,於是我執行了如下指令:

sudo  chown -R hadoop:hadoop /home/hadoop/appdata/

重新格式化,然後start-all.sh,搞定了! 總結為檔的許可權問題。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.