最近幾天在忙參加一個雲計算比賽,之前也在Ubuntu上配成功過hadoop,不過是按照書上講的,一步一步來的。因此,印象不深,對自己的幫助也不大。這次趁着機會,自己練了兩遍配置過程,感覺收獲比較豐富,就寫一篇文章小結一下。
首先要把給我很多指導的一個網址貼出來:廈門大學數據庫實驗室博客 http://dblab.xmu.edu.cn/blog/。作為一個數據庫實驗室,能有精力和熱情做好這么一個網站,真的很崇拜他們。另外,寫着篇文章的另一個目的是網上不同版本的ubuntu配置Hadoop文章實在太多,不同的人有不同的方法,不同的版本配置方法也都有差異,因此之前也因為這個走了不少彎路,失敗了好多次。寫下這個,就是我真的,,,把系統配好了,可以作為經驗被別人使用。
環境:
系統:Ubuntu Kylin 14.04LTS版本(不得不說,相比原始的系統,這個中國定制版麒麟實在是好看和好用多了)
Hadoop 2.6.0
jdk1.8.0_25
步驟:
1. 創建Hadoop用戶
創建用戶
sudo adduser -m hadoop -s /bin/bash
設置密碼
sudo passwd hadoop
為hadoop用戶創建目錄
cd /home sudo mkdir hadoop sudo chown hadoop /home/hadoop
為hadoop用戶授予管理員權限,這樣方便以后的操作
sudo adduser hadoop sudo
注銷當前用戶,登錄hadoop用戶
2. 安裝SSH
SSH(Secure Shell)是目前比較可靠的為遠程登錄會話和其他網絡服務提供安全性的協議。利用SSH協議可以有效防止遠程管理過程中的信息泄露問題。通過SSH,可以把所有傳輸的數據進行加密,也能夠防止DNS欺騙和IP欺騙。
安裝SSH server
sudo apt-get install openssh-server
設置SSH無密碼登陸
ssh localhost
有如下提示(SSH首次登陸提示),輸入yes
配置成無密碼登陸:
先輸入 exit 退出ssh,然后執行如下命令
cd ./.ssh # 如果沒有該目錄,先執行一次ssh localhost ssh-keygen -t rsa # 一直按回車就可以,生成的密鑰保存為.ssh/id_rsa cp id_rsa.pub authorized_keys
再用ssh localhost
命令,就可以直接登陸了
3. 配置jdk
首先介紹廈大數據庫實驗室博客介紹的方法:
sudo apt-get install openjdk-7-jre openjdk-7-jdk
這種方法可以直接在終端安裝好jdk,不過在嘗試之后報錯,,,由於水平不高,沒有找到錯在哪里。
第二種方法是我是用的。首先在Oracle官網上下載jdk安裝包,我下載的是jdk-8u25-linux-x64.tar.gz 解壓之后是jdk1.8.0_25文件夾,存在主文件夾中。
然后將該文件夾拷貝到/usr/lib/jvm
sudo cp -r ~/jdk1.8.0_25 /usr/lib/jvm
然后更名為java-8u5-sun
sudo mv /usr/lib/jvm/jdk1.8.0_25 /usr/lib/jvm/java-8u5-sun
之后配置環境變量
sudo gedit ~/.bashrc
在文件的末尾加上
export JAVA_HOME=/usr/lib/jvm/java-8u5-sun
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
其中,JAVA_HOME存放的是java安裝的路徑。
然后,使上述配置生效
source ~/.bashrc
這時,jdk的配置工作基本結束,可以在終端輸入java來驗證,若終端輸出java命令的后綴解釋,則表明安裝成功
4. 安裝Hadoop
首先到Apache官網下載Hadoop,我下載的是Hadoop2.6.0 壓縮包名稱:hadoop-2.6.0.tar.gz 解壓縮后為hadoop-2.6.0
將文件夾拷貝到/usr/local/hadoop中
sudo mv ~/hadoop-2.6.0/ /usr/local/hadoop # 將文件名改為hadoop sudo chown -R hadoop:hadoop /usr/local/hadoop # 修改文件權限
修改環境變量信息JAVA_HOME
cd /usr/local/hadoop gedit etc/hadoop/hadoop-env.sh
將 export JAVA_HOME=${JAVA_HOME}
改為
export JAVA_HOME="/usr/lib/jvm/java-8u5-sun"
輸入如下命令Hadoop檢查是否可用,成功則會顯示命令行的用法
bin/hadoop
5. Hadoop偽分布設置
修改配置文件etc/hadoop/core-site.xml,將
<configuration> </configuration>
改為:
<configuration> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/hadoop/tmp</value> <description>Abase for other temporary directories.</description> </property> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration>
修改配置文件etc/hadoop/hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/dfs/data</value> </property> </configuration>
配置完成后,首先在 Hadoop 目錄下創建所需的臨時目錄:
cd /usr/local/hadoop mkdir tmp dfs dfs/name dfs/data
初始化文件系統HDFS
bin/hdfs namenode -format
開啟NameNode等進程
sbin/start-dfs.sh
輸入jps,以檢查各個節點是否就緒。若此時DataNode等節點沒有開啟,則重新初始化,重新start
到此為之,Hadoop的配置工作完成。
下一篇介紹在Ubuntu環境中編譯和運行Hadoop程序的步驟