Hadoop环境配置与测试
前面的实验我们做好了Linux环境和Hadoop环境的准备与配置工作,因此这一实验我们在上一实验的基础上进行Hadoop环境的配置和测试。
Hadoop环境搭建前的Linux环境安装与配置
https://blog.csdn.net/weixin_43640161/article/details/108614907
Linux下JDK软件的安装与配置
https://blog.csdn.net/weixin_43640161/article/details/108619802
掌握Linux下Eclipse软件的安装与配置
https://blog.csdn.net/weixin_43640161/article/details/108691921
熟悉Hadoop的下载与解压
https://blog.csdn.net/weixin_43640161/article/details/108697510
Hadoop的安装方式有三种,分别是单机模式,伪分布式模式,分布式模式。
• 单机模式:Hadoop 默认模式为非分布式模式(本地模式),无需进行其他配置即可运行。非分布式即单 Java 进程,方便进行调试。
• 伪分布式模式:Hadoop可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。
• 分布式模式:使用多个节点构成集群环境来运行Hadoop。
• 本实验采取单机伪分布式模式进行安装。
重要知识点提示:
- Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件
- Hadoop 的配置文件位于 hadoop/etc/hadoop/ 中,伪分布式需要修改5个配置文件hadoop-env.sh、 core-site.xml 、 hdfs-site.xml 、mapred-site.xml和yarn-site.xml
- Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现
实验步骤: - 修改配置文件:hadoop-env.sh、core-site.xml,hdfs-site.xml,mapred-site.xml、yarn-site.xml
- 初始化文件系统hadoop namenode -format
- 启动所有进程start-all.sh或者start-dfs.sh、start-yarn.sh
- 访问web界面,查看Hadoop信息
- 运行实例
- 停止所有实例:stop-all.sh
第一步:配置Hadoop环境(jdk版本不同,修改的内容也不同,我这里是jdk1.8.0_181和hadoop-3.1.1)
1.配置Hadoop(伪分布式),修改其中的5个配置文件即可
-
进入到Hadoop的etc目录下
终端命令:cd /bigdata/hadoop-3.1.1/etc/hadoop
-
修改第1个配置文
终端命令:sudo vi hadoop-env.sh
找到第54行,修改JAVA_HOME如下(记得去掉前面的 # 号):
export JAVA_HOME=/opt/java/jdk1.8.0_181
- 修改第2个配置文件
终端命令:sudo vi core-site.xml
<configuration>
<!-- 配置hdfs的namenode(老大)的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<!-- 配置Hadoop运行时产生数据的存储目录,不是临时的数据 -->
<property>
<name>hadoop.tmp.dir</name>
<value>file:/bigdata/hadoop-3.1.1/tmp</value>
</property>
</configuration>
- 修改第3个配置文件
终端命令:sudo vi hdfs-site.xml
<configuration>
<!-- 指定HDFS存储数据的副本数据量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>localhost:50070</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/bigdata/hadoop-3.1.1/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/bigdata/hadoop-3.1.1/tmp/dfs/data</value>
</property>
</configuration>
此外,伪分布式虽然只需要配置 fs.defaultFS 和 dfs.replication 就可以运行(官方教程如此),不过若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行。所以我们进行了设置,同时也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。
- 修改第4个配置文件:
终端命令:sudo vi mapred-site.xml
<configuration>
<!-- 指定mapreduce编程模型运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
- 修改第5个配置文件
sudo vi yarn-site.xml
<configuration>
<!-- 指定yarn的老大(ResourceManager的地址) -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<!-- mapreduce执行shuffle时获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
-
对hdfs进行初始化(格式化HDFS)
终端命令:
cd /bigdata/hadoop-3.1.1/bin/
sudo ./hdfs namenode -format
-
如果提示如下信息,证明格式化成功:
第二步:启动并测试Hadoop
终端命令:
cd /bigdata/hadoop-3.1.1/sbin/
ssh localhost
sudo ./start-dfs.sh
sudo ./start-yarn.sh
start-all.sh
如果报以上错误,请修改下面4个文件如下:
在/hadoop/sbin路径下:
将start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数
#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
终端命令: sudo vi start-dfs.sh
终端命令: sudo vi stop-dfs.sh
还有,start-yarn.sh,stop-yarn.sh顶部也需添加以下参数:
#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
终端命令: sudo vi start-yarn.sh
终端命令: sudo vi start-yarn.sh
修改后重启./start-all.sh,成功!
此外,如果出现以下错误:
用以下方式解决:
终端命令:
ssh localhost
cd /bigdata/hadoop-3.1.1/
sudo chmod -R 777 logs
sudo chmod -R 777 tmp
-
使用jps命令检查进程是否存在,总共5个进程(jps除外),每次重启,进程ID号都会不一样。如果要关闭可以使用 stop-all.sh命令。
4327 DataNode
4920 NodeManager
4218 NameNode
4474 SecondaryNameNode
4651 ResourceManager
5053 Jps
-
访问hdfs的管理界面
localhost:50070
-
访问yarn的管理界面
localhost:8088
- 如果点击节点Nodes,发现ubuntu:8042也可访问
- 如果想停止所有服务,请输入sbin/stop-all.sh
以上就是Hadoop环境配置与测试的内容,如果遇到一些奇奇怪怪的错误,可以在评论区留言。