初學hadoop,雖然有公司有已配置好的hadoop環境,但是為了加深理解,還是決定自己搭建1次。hadoop環境的搭建其實進程其實不多,關鍵是后面修改配置文件時容易出現很多的問題,這幾天用了很多時間,反復裝反復改,終究把環境全部裝好。下面就來回顧1下搭建進程。
1、linux安裝環境與安裝包。
CentOS 7 3臺 (已提早裝好,網絡地址轉換使用NAT模式,確保主機之間可以相互ping通)
hadoop-master :192.168.15.128
hadoop-slave1 :192.168.15.129
hadoop-slave2 : 192.168.15.130 //靜態IP
java安裝包 jdk⑻u111-linux-x64.rpm
hadoop安裝包 hadoop⑵.7.1.tar.gz
2、主機之間配置ssh免密鑰登錄。
1、 主機A:ssh-keygen–t rsa
2、 A機.ssh下:scp id_rsa.pub hadoop@192.168.15.129:/home/hadoop/.ssh/id_rsa.pub(復制公鑰到B機)
3、 B機.ssh下: cat id_rsa.pub >> authorized_keys(添加公鑰)(B主機需要先創建好.ssh文件夾)
4、 B機.ssh下:chmod 600 authorized_keys (修改文件權限)
5、 B機~下:chmod 700 .ssh (修改文件夾權限)
3、安裝jdk。
1、官網下載jdk⑻u111-linux-x64.rpm安裝包。
2、將安裝包放到/usr/java/下解壓,輸入命令,tar -zxvf jdk⑺u79-linux-x64.gz。
3、編輯/etc/profile,添加:
JAVA_HOME=/usr/java/jdk1.8.0_111
JRE_HOME=/usr/java/jdk1.8.0_111/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
4、使配置生效,輸入命令,source /etc/profile。
5、檢查是不是安裝成功,java -version,完成。
4、hadoop安裝。
1、將hadoop⑵.7.1.tar.gz放在/home/hadoop/下,解壓:tar -xzvf hadoop⑵.7.0.tar.gz。
2、修改配置文件。(重點來了!!!)
(1)需要修改的文件基本上都在 /hadoop⑵.7.1/etc/hadoop/下(有1特例,.bashrc最后會講)
core-site.xml:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.15.128:8020</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.15.128:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop⑵.7.1/data/hadoop_tmp</value>
</property>
</configuration>
hdfs-site.xml:
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/hadoop⑵.7.1/data/nameNodeData</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/hadoop⑵.7.1/data/dataNodeData</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
mapred-site.xml:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>hdfs://hadoop-master</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/home/hadoop/hadoop⑵.7.1/data/jobTracker</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>
/home/hadoop/hadoop⑵.7.1/etc/hadoop,
/home/hadoop/hadoop⑵.7.1/share/hadoop/common/*,
/home/hadoop/hadoop⑵.7.1/share/hadoop/common/lib/*,
/home/hadoop/hadoop⑵.7.1/share/hadoop/hdfs/*,
/home/hadoop/hadoop⑵.7.1/share/hadoop/hdfs/lib/*,
/home/hadoop/hadoop⑵.7.1/share/hadoop/mapreduce/*,
/home/hadoop/hadoop⑵.7.1/share/hadoop/mapreduce/lib/*,
/home/hadoop/hadoop⑵.7.1/share/hadoop/yarn/*,
/home/hadoop/hadoop⑵.7.1/share/hadoop/yarn/lib/*
</value>
</property>
</configuration>
yarn-site.xml:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop-master</value>
</property>
<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>
<property>
<name>yarn.application.classpath</name>
<value>
/home/hadoop/hadoop⑵.7.1/share/hadoop/common/*,
/home/hadoop/hadoop⑵.7.1/share/hadoop/common/lib/*,
/home/hadoop/hadoop⑵.7.1/share/hadoop/hdfs/*,
/home/hadoop/hadoop⑵.7.1/share/hadoop/hdfs/lib/*,
/home/hadoop/hadoop⑵.7.1/share/hadoop/mapreduce/*,
/home/hadoop/hadoop⑵.7.1/share/hadoop/mapreduce/lib/*,
/home/hadoop/hadoop⑵.7.1/share/hadoop/yarn/*,
/home/hadoop/hadoop⑵.7.1/share/hadoop/yarn/lib/*
</value>
</property>
</configuration>
下面兩個文件修改的地方只有1處,只需export JAVA_HOME 便可。
hadoop-env.sh:
yarn-env.sh:
最后1步,很重要!!!
前面提到了,還有1個.bashrc文件不在/hadoop/hadoop⑵.7.1/etc/hadoop/下的,這個文件就在hadoop下,由因而1個隱藏文件,ls -a 便可查看。
添加以下內容:
export JAVA_HOME=export JAVA_HOME=/usr/java/jdk1.8.0_111
export HADOOP_HOME=/home/hadoop/hadoop⑵.7.1
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_YARN_HOME=$HADOOP_HOME
export CLASSPATH=.:$JAVA_HOME/lib:$HADOOP_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
1開始沒有修改這個文件,總是會出現
毛病: 找不到或沒法加載主類 org.apache.hadoop.hdfs.server.namenode.NameNode
這樣的問題,緣由就是找不到hadoop路徑,致使hdfs節點出錯。
以上所有步驟完成便可運行hadoop程序,我也從網上找了1下類似單詞計數、單詞排序等小程序測試,都可順利實現。唯1缺點就是mapreduce進程太耗時。
總結:從虛擬機安裝、linux系統安裝、hadoop安裝,前前后后花了1周時間,但是后面看來是值得的,現在剛剛開始接觸hadoop,對這些基礎性的知識還是需理解清楚,在后面hadoop實際開發中能夠節儉很多查錯改錯的時間。我也是個初學者,以上的配置個人也是通過網上和導師電腦上的配置結合,最后總結出來的。使用相同方法應當是可以很快搭建好hadoop平臺的,希望能給和我1樣剛剛接觸hadoop的同學帶來1些幫助。
下一篇 MySQL表的操作(二)