Hadoop及相关组件搭建指导WeChat:h19396218469
hadoop-3.1.3
jdk-8u162-linux-x64
本案例软件包:链接:https://pan.baidu.com/s/1ighxbTNAWqobGpsX0qkD8w
提取码:lkjh(若链接失效在下面评论,我会及时更新)
cd /usr/local/hadoop/etc/hadoop
修改hadoop-env.sh文件找到其中JAVA_HOME参数位置添加JDK路径。
sudo vi hadoop-env.sh
core-site.xml是Hadoop集群的核心配置文件,包含了HDFS地址,端口号,临时文件目录。
打开core-site.xml配置文件
sudo vi core-site.xml
编辑core-site.xml文件内容
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
</configuration>
其中配置了HDFS的主进程NameNode运行主机(Hadoop集群主节点),还有Hadoop集群运行时生成数据的临时目录。
该文件配置了HDFS的NameNode和DataNode两大进程。
打开hdfs-site.xml文件夹
sudo vi hdfs-site.xml
编辑hdfs-site.xml文件内容
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave01:50090</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>master:50070</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name> dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
其中配置了Secondarynamenode,namenode所在的主机IP和端口,HDFS块的副本数和临时文件存放的目录。
该文件用于指定MapReduce运行框架。
打开mapred-site.xml文件夹
sudo vi mapred-site.xml
编辑mapred-site.xml文件内容
<configuration>
<property>
<name> mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
<property>
<name> yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property>
</configuration>
其中指定了MapReduce的运行框架。
该文件用于指定YARN集群的管理者
打开yarn-site.xml文件夹
sudo vi yarn-site.xml
编辑yarn-site.xml文件内容
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
其中指定了ResourceManager运行主机为master,将NodeManager运行时的附属服务配置为mapreduce_shuffle才能正常运行MapReduce默认程序。
该文件记录Hadoop集群的所有从节点,以配合脚本一键启动从节点
打开workers文件
sudo vi workers
添加内容,每个主机名各占一行
master
slave01
slave02
执行以下命令
sudo scp /etc/profile slave01:/etc/profile
sudo scp /etc/profile slave02:/etc/profile
sudo scp -r /usr/local/hadoop slave01:/usr/local
sudo scp -r /usr/local/hadoop slave02:/usr/local
sudo scp -r /usr/local/jdk slave01:/usr/local
sudo scp -r /usr/local/jdk slave02:/usr/local
scp ~/.bashrc slave01:~/
scp ~/.bashrc slave02:~/
上述命令执行完成后还需要在slave01和slave02上分别执行
source /etc/profile
source ~/.bashrc
在slave01和slave02分别执行以下命令修改文件夹权限
cd /usr/local
sudo chown -R hadoop ./hadoop
执行以下命令
hdfs namenode -format
在前面我们已经配置了环境变量,所以我们在任何一个文件夹都可以启动Hadoop集群
使用以下命令启动Hadoop集群
start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver
使用以下命令对Hadoop进程进行检查
jps
在三台虚拟机分别执行以下命令关闭防火墙和防火墙自启动
sudo service iptables stop
sudo chkconfig iptables off
Windows10和Windows7操作系统的路径为C:\Windows\System32\drivers\etc\hosts
添加内容如下:
执行完上述操作后,可通过宿主机或者三台虚拟机的浏览器分别访问http://master:50070和http://master:8088查看HDFS集群和YARN集群状态,效果如下图:
cd ~
vi word.txt
在其中编辑内容:hello Hadoop
hdfs dfs -put word.txt /
hdfs dfs -cat /word.txt
cat word.txt
输出内容一致,表明Hadoop集群搭建成功!