hadoop目前最新版本爲3.2.1,本教程將使用hadoop最新版本搭建大數據集羣,並通過yarn運行wordcount的mapreduce程序
軟件和服務器準備工作
軟件準備
服務器準備
ip(主機名) | 外網ip | 功能 |
---|---|---|
172.19.86.64(host01) | 139.196.56.185 |
namenode resourcemanager |
172.19.86.65(host02) | 47.100.167.206 |
datanode nodemanager |
172.19.86.63(host03) | 139.196.193.96 |
datanode nodemanager |
服務器環境配置
-
將jdk和hadoop放置到3臺服務器的 /home/software 目錄,並解壓到當前目錄
-
在3臺服務器上配置jdk環境變量,JAVA_HOME=/home/software/jdk1.8.0_202
-
在3臺服務器上配置 /etc/hosts 文件,使3臺服務器能夠通過hostname互相ping通
-
在3臺服務器上生成ssh密鑰對,並相互拷貝公鑰文件追加到 ~/.ssh/authorized_keys 文件中,檢測是否能夠ssh免密鑰互通
搭建hdfs文件系統
3臺服務器上修改hadoop-env.sh 文件,路徑爲 /home/software/hadoop-3.2.1/etc/hadoop/hadoop-env.sh ,內容爲:
export JAVA_HOME=/home/software/jdk1.8.0_202
export HADOOP_HOME=/home/software/hadoop-3.2.1
3臺服務器上新建data目錄,命令爲
mkdir -p /home/software/hadoop-3.2.1/data/tmp
mkdir -p /home/software/hadoop-3.2.1/data/namenode
mkdir -p /home/software/hadoop-3.2.1/data/datanode
3臺服務器上修改core-site.xml 文件,路徑爲 /home/software/hadoop-3.2.1/etc/hadoop/core-site.xml,內容爲:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://host01:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/software/hadoop-3.2.1/data/tmp</value>
</property>
</configuration>
3臺服務器上hdfs-site.xml,路徑爲 /home/software/hadoop-3.2.1/etc/hadoop/hdfs-site.xml,內容爲:
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/software/hadoop-3.2.1/data/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/software/hadoop-3.2.1/data/datanode</value>
</property>
</configuration>
3臺服務器上修改workers文件,路徑爲:/home/software/hadoop-3.2.1/etc/hadoop/workers ,內容爲:
host01
host02
host03
在host01上格式化文件系統,命令爲: /home/software/hadoop-3.2.1/bin/hdfs namenode -format
在host01上啓動namenode,命令爲 sbin/hadoop-daemon.sh start namenode
在3臺服務器上啓動datanode,命令爲 sbin/hadoop-daemon.sh start datanode
這樣我們就可以在瀏覽器通過 http://139.196.56.185:9870/ 地址訪問我們的hdfs文件系統了
在host01上創建文件夾 bin/hdfs dfs -mkdir -p /user/root/wordcount/input
配置yarn
3臺服務器上配置mapred-site.xml文件,路徑爲 /home/software/hadoop-3.2.1/etc/hadoop/mapred-site.xml, 內容爲
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
</property>
</configuration>
3臺服務器上配置yarn-site.xml.xml文件,路徑爲 /home/software/hadoop-3.2.1/etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>host01</value>
</property>
</configuration>
在host01上啓動resourcemanager,命令爲 sbin/yarn-daemon.sh start resourcemanager
在3臺服務器上啓動nodemanager,命令爲 sbin/yarn-daemon.sh start nodemanager
http://139.196.56.185:8088/cluster,訪問yarn的web頁面
在yarn上運行wordcount程序
- bin/hdfs dfs -put input.txt wordcount/input 放置文件到hdfs文件系統中
- bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar wordcount wordcount/input wordcount/output 在yarn上運行mapreduce的wordcount程序
- bin/hdfs dfs -cat wordcount/output/part* 查看wordcount運行的結果