服務器環(huán)境:Ubuntu15.04儿奶、jdk1.7、Hadoop2.7.1
1. 創(chuàng)建spark用戶####
為了隔離Hadoop和其它軟件缘挽, 創(chuàng)建了可以登陸的 spark 用戶锨侯,并使用 /bin/bash 作為 shell:
sudo useradd -m spark-s /bin/bash
設置spark用戶密碼:
sudo passwd spark
可為 spark用戶增加管理員權限,避免部署時候遇到一些奇怪的權限問題:
sudo adduser hadoop sudo
添加完用戶后早抠,用戶spark賬戶登錄服務器霎烙,進行服務器配置撬讽。
2. SSH登錄配置#####
集群、單節(jié)點模式都需要用到 SSH登陸 悬垃,并且配置ssh的免密碼登錄游昼,在集群啟動時候可以免去輸入密碼的麻煩。Ubuntu 默認已安裝了 SSH client尝蠕,此外還需要安裝 SSH server:
sudo apt-get install openssh-server
測試使用ssh登錄本機:
ssh localhost
登錄成功后可以輸入exit
退出
設置ssh無密碼登錄
設置免密碼登錄烘豌,生成私鑰和公鑰,利用 ssh-keygen 生成密鑰看彼,并將密鑰加入到授權中廊佩。
生成公鑰/私鑰對:
ssh-keygen -t rsa -P ""
-P表示密碼,-P '' 就表示空密碼靖榕,也可以不用-P參數(shù)标锄,這樣就要三車回車,用-P就一次回車茁计。它在/home/spark下生成.ssh目錄料皇,.ssh下有id_rsa和id_rsa.pub,前者為私鑰,后者為公鑰践剂。
下面我們將公鑰追加到authorized_keys中鬼譬,它用戶保存所有允許以當前用戶身份登錄到ssh客戶端用戶的公鑰內容
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
再次使用ssh登陸localhost,就不再需要輸入密碼:
ssh localhost
記得退出登錄逊脯,繼續(xù)進行配置exit
3. 安裝Java環(huán)境####
安裝JDK:
sudo apt-get update
sudo apt-get install openjdk-7-jdk
安裝成功后优质,使用java -version
java版本
配置Java環(huán)境變量,如果使用上面的方法安裝jdk军洼,那么Java的安裝路徑應該是/usr/lib/jvm/java-7-openjdk-amd64盆赤,但是如果不能確定,可以使用如下命令:
update-alternatives - -config java
輸入結果:/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
我們只取前面的部分 /usr/lib/jvm/java-7-openjdk-amd64
配置.bashrc文件:
sudo vim ~/.bashrc #如果沒有vim 請另行安裝vim
在文件末尾追加下面內容歉眷,然后保存
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
執(zhí)行下面命牺六,使添加的環(huán)境變量生效:
source ~/.bashrc
測試Java環(huán)境變量結果:
echo $JAVA_HOME
如果輸出/usr/lib/jvm/java-7-openjdk-amd64 則表示配置成功
4. 配置Hadoop####
4.1 下載安裝Hadoop
Hadoop 2 可以通過 http://mirror.bit.edu.cn/apache/hadoop/common/ 下載,一般選擇下載最新的穩(wěn)定版本汗捡,即下載 “stable” 下的 hadoop-2.x.y.tar.gz 這個格式的文件淑际,這是編譯好的,另一個包含 src 的則是 Hadoop 源代碼扇住,需要進行編譯才可使用春缕。
我直接下載編譯好的壓縮包:
wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.1/hadoop-2.7.1.tar.gz
解壓縮:
tar xfz hadoop-2.7.1.tar.gz
將安裝包移動到usr/local/hadoop
sudo mv hadoop-2.6.0 /usr/local/hadoop
更改hadoop文件夾的所有者為spark用戶
sudo chown -R spark /usr/local/hadoop
測試hadoop是否可用
/usr/local/hadoop/bin/hadoop version
正確顯示hadoop版本表示可用
4.2 Hadoop相關環(huán)境變量配置
打開./bashrc文件:
sudo vim ~/.bashrc
在.bashrc文件末尾添加相關環(huán)境變量:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
應用環(huán)境變量:
source ~/.bashrc
4.3 hadoop相關配置文件的配置
-
配置hadoop-env.sh
sudo vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh
更改JAVA_HOME為
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 -
配置core-site.xml
sudo vim $HADOOP_HOME/etc/hadoop/core-site.xml
在
<configuration></configuration>
之間加入HDFS的配置(HDFS的端口配置在9000):
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property> -
配置yarn-site.xml
sudo vim $HADOOP_HOME/etc/hadoop/yarn-site.xml
在
<configuration></configuration>
之間加入以下內容:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property> -
配置mapred-site.xml
HADOOP_HOME目錄下有一個配置模板$HADOOP_HOME/etc/hadoop/mapred-site.xml.template,先拷貝到$HADOOP_HOME/etc/hadoop/mapred-site.xml艘蹋。cp $HADOOP_HOME/etc/hadoop/mapred-site.xml{.template,}
編輯$HADOOP_HOME/etc/hadoop/mapred-site.xml文件:
sudo vim $HADOOP_HOME/etc/hadoop/mapred-site.xml
在`<configuration></configuration>`之間加入以下內容:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
4.3 配置HDFS文件目錄
1. 創(chuàng)建文件目錄
假設準備將數(shù)據存放在/mnt/hdfs锄贼,方便起見,現(xiàn)將其設為一個環(huán)境變量:
export HADOOP_DATA_DIR=/mnt/hdfs
創(chuàng)建DataNode和NameNode的存儲目錄女阀,同時將這兩個文件夾的所有者修改為spark:
sudo mkdir -p $HADOOP_DATA_DIR/namenode
sudo mkdir -p $HADOOP_DATA_DIR/datanode
sudo chown -R spark $HADOOP_DATA_DIR
2. 配置hdfs-site.xml文件
sudo vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml
在<configuration></configuration>
之間增加DataNode和NameNode的配置宅荤,如下:
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/mnt/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/mnt/hdfs/datanode</value>
</property>
3. 格式化HDFS文件系統(tǒng)
使用下列命令格式化HDFS文件系統(tǒng):
hdfs namenode -format
5. 啟動Hadoop####
啟動HDFS:
$HADOOP_HOME/sbin/start-dfs.sh
啟動yarn:
$HADOOP_HOME/sbin/start-yarn.sh
HDFS和yarn的web控制臺默認監(jiān)聽端口分別為50070和8088〗撸可以通過瀏覽放訪問查看運行情況冯键。
停止命令:
$HADOOP_HOME/sbin/stop-dfs.sh
$HADOOP_HOME/sbin/stop-yarn.sh
如果一切正常,使用jps可以查看到正在運行的Hadoop服務庸汗,在我機器上的顯示結果為:
5003 SecondaryNameNode
5341 NodeManager
4798 DataNode
5182 ResourceManager
7311 Jps
4639 NameNode
6. 運行WordCount測試####
單機模式安裝完成惫确,下面通過執(zhí)行hadoop自帶實例WordCount驗證是否安裝成功。
查看HDFS根目錄下的文件:
hdfs dfs -ls /
在HDFS上創(chuàng)建input目錄:
hdfs dfs -mkdir /input
將Hadoop路徑下的README.txt傳到HDFS:
hdfs dfs -put $HADOOP_HOME/README.txt /input/
完成后運行如下命令蚯舱,進行Word Count操作:
bin/hadoop jar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.7.1-sources.jar org.apache.hadoop.examples.WordCount /input /output
查看計算結果:
hdfs dfs -cat /output/*
最后Hadoop單節(jié)點的配置就完成了。如有什么問題枉昏,希望大家批評指正陈肛。
7. 參考資料####
1. Hadoop單節(jié)點安裝
2. Ubuntu14.04下安裝Hadoop2.4.0 (單機模式)
3. Hadoop安裝教程_單機/偽分布式配置_Hadoop2.6.0/Ubuntu14.04