1 環境準備
A 機器/ip準備 4臺虛擬機,Centos6.4系統
vim /etc/sysconfig/network,修改對應的hostname分別爲namenode,datanode1,datanode2,datanode3
並將下面的內容寫入每臺機器的/etc/hosts
192.168.247.129 namenode
192.168.249.130 datanode1
192.168.249.131 datanode2
192.168.249.132 datanode3
B 建立用戶(組)及數據目錄
建立用戶及用戶組
groupadd hadoop
useradd -g hadoop hadoop
修改權限
chmod u+w /etc/sudoers
vim /etc/sudoers 找到root ALL=(ALL:ALL) ALL,在其下面加入 hadoop ALL=(ALL:ALL) ALL
chmod u-w /etc/sudoers
建立相應目錄
namenode
mkdir /data/hadoop
mkdir /data/hadoop/name
mkdir /data/hadoop/tmp
chown -R hadoop:hadoop /data/hadoop
datanode
mkdir /data/hadoop
mkdir /data/hadoop/data
mkdir /data/hadoop/tmp
chown -R hadoop:hadoop /data/hadoop
C 配置ssh免密鑰
讓各機器之間能ssh免密鑰登錄,注意是針對hadoop用戶。
---------以下操作,每臺機器都進行-----------------—-
su hadoop
cd #切到用戶目錄
ssh-keygen -t rsa #一路回車即可
------------------------------------------------
上面的操作將會在~/.ssh目錄下生成id_rsa私鑰和id_rsa.pub公鑰文件
將所有機器的id_rsa.pub文件裏面的公鑰串拷貝到~/.ssh/authorized_keys文件中
然後將authorized_keys分發到各臺機器的~/.ssh/目錄中。
測試驗證……
D 安裝jdk
cd /usr/java #沒有java文件夾 新建一個
下載jdk-8u5-linux-x64.rpm jdk文件到此目錄下,注意jdk版本需要1.6及以上。
rpm -ivh jdk-8u5-linux-x64.rpm
將下面加入到/etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_45
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
執行source /etc/profile
java -version 測試
2 hadoop配置及安裝
A下載安裝
官網放出的安裝版本都針對32位系統的,所以要注意如果你的系統是64位,需要在64位系統下重新編譯安裝包。
http://down.51cto.com/data/1078830 這裏有編譯好的64位的版本。
解壓安裝包,並將其移到/usr/local中
tar zxvf hadoop-2.2.0.gz
mv hadoop_xx /usr/local/
chown -R hadoop:hadoop /usr/local/hadoop-2.2.0
B 在namenode上修改配置文件
su hadoop
cd /usr/local/hadoop/etc/hadoop
vim hadoop-env.sh 修改JAVA_HOME
export JAVA_HOME=/usr/java/jdk1.8.0_45
core-site.xml
<configuration>
<property>
<name>fs.default.name</name> //namenode的配置,機器名加端口;
<value>hdfs://192.168.247.129:11111</value>
</property>
</configuration>
mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name> //JobTracker的配置,機器名加端口;
<value>namenode:11112</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.name.dir</name> //Namenode持久存儲名字空間及事務日誌的本地文件系統路徑;
<value>/data/hadoop/name</value>
</property>
<property>
<name>hadoop.tmp.dir</name> //Hadoop的默認臨時路徑是在/tmp下,最好進行配置,如果不配
<value>/data/hadoop/tmp/</value>//置,機器重啓後需要執行NameNode格式化的命令;
</property>
</configuration>
vim masters
192.168.247.129
vim slaves
192.168.249.130
192.168.249.131
192.168.249.132
注:masters文件用於指定secondary的主機而不是namenode,slaves用於指定datanode和tasktracker,
C 將程序文件拷入到各個datanode中
su root
cd /usr/local
scp -rp hadoop-xx [email protected]:/usr/local
root登錄到datanode,修改程序文件用戶
chown -R hadoop:hadoop /usr/local/hadoop-2.2.0
su hadoop
cd /usr/local/hadoop-2.2.0/etc/hadoop
修改hdfs-site.xml
<property>
<name>dfs.data.dir</name> //DataNode存放塊數據的本地文件系統路徑,逗號分隔的列表
<value>/data/hadoop/data</value> //注意不同之處在此
</property>
3 hadoop運行
cd /usr/loca/hadoop-2.2.0/bin
./hadoop namenode -format #如果有報錯,請處理
cd /usr/local/hadoop-2.2.0/sbin
./start_all.sh
開始運行後通過網頁的可以查看相關信息
http://192.168.247.129:50070
http://192.168.247.129:50030
jps #java自帶查看進程的命令
#此版本與以往版本不一樣,namenode是看不到jobtracker進程,datanode看不到tasktracker進程
4 hdoop執行測試任務
su hadoop
cd /home/hadoop/
mkdir input
echo ‘hello world’ > input/test1.txt #準備數據
echo ‘hello hadoop’ > input/test2.txt
/usr/local/hadoop-2.2.0/bin/hdfs dfs -put input/ /in #導入數據
/usr/local/hadoop-2.2.0/bin/hdfs dfs -ls /
/usr/local/hadoop-2.2.0/bin/hdfs dfs -ls /in/
/usr/local/hadoop-2.2.0/bin/hadoop jar /usr/local/hadoop-2.2.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount /in /out #執行job
/usr/local/hadoop-2.2.0/bin/hdfs dfs -ls /out/
/usr/local/hadoop-2.2.0/bin/hdfs dfs -cat /out/*
hadoop1
hello2
world1