Hadoop伪分布式配置和搭建,hadoop单机安装,wordcount实例测试,hadoop安装java目录怎么找,问题及问题解决方法
环境说明
系统:ubuntu18.04
主机名:test1
用户名:sylvan
hadoop单机安装
换源操作这里不再给出,请各位自行解决。
在Linux环境下完成单机环境的搭建,并运行Hadoop自带的WordCount实例检测是否运行正常。
Java是Hadoop的主要先决条件。首先检查java是否安装:java -version
java未安装,使用sudo apt install openjdk-8-jdk 安装OpenJDK8.
再次检查java是否安装成功:
查看java环境变量是否配置:
无输出,说明环境变量未配置,接下来查找java安装路径,配置环境变量。
先查找java安装路径,发现是:/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
在/etc/profile里配置java环境变量,配置完成后用echo检查JAVA_HOME成功:
接着下载hadoop-2.10.1,并解压(在 /usr/local/ 里)。
配置hadoop环境变量,并尝试运行hadoop:
这意味着Hadoop在独立模式下工作正常。默认情况下,Hadoop被配置为在非分布式模式的单个机器上运行。
运行WordCount测试
利用hadoop提供的的.jar 文件实现wordcount. 首先,创建输入目录input,接着创建测试文本,在input目录复制几份。
测试文本:
测试文本的复制:
查看hadoop mapreduce例子有哪些功能:
hadoop-mapreduce-examples-2.10.1.jar
启动Hadoop进程计数在所有在输入目录中可用的文件的单词总数,将结果保存到output 文件夹中。
查看 output 文件夹内容:
Hadoop伪分布式搭建
在Linux环境下完成伪分布式环境的搭建,并运行Hadoop自带的WordCount实例检测是否运行正常。
Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。Hadoop 的配置文件位于 /usr/local/hadoop-2.10.1/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。
首先,配置hadoop的环境变量:(在etc/profile
中)
配置hadoop-env.sh文件的java环境变量。
注意:这里要将 ${JAVA_HOME}
替换为之前在 /etc/profile
里设置的JAVA_HOME,也就是 export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
mapred-env.sh、yarn-env.sh无需再配置。
接着配置Hadoop的文件列表。
core-site.xml文件中包含如读/写缓冲器用于Hadoop的实例的端口号的信息,分配给文件系统存储,用于存储所述数据存储器的限制和大小。
hdfs-site.xml 文件中包含如复制数据的值,NameNode路径的信息,本地文件系统的数据节点的路径。这意味着是存储Hadoop基础工具的地方。
slave文件添加节点主机,发现已经有localhost,因为是伪分布式,所以无需修改成本机的test1.
格式化namenode
启动hdfs守护进程
查看web端,说明搭建好了Hadoop的hdfs分布式存储,接下来要继续配置Hadoop的mapreduce.
mapred-site.xml 文件用于指定正在使用MapReduce框架,从mapred-site.xml.template 模版复制即可,指定mapreduce程序运行在yarn平台上。
yarn-site.xml 用于配置yarn.
问题:
启动yarn:(yarn)启动失败,JAVA_HOME is not set and could not be found.
问题解决:配置hadoop-env.sh文件里的JAVA_HOME环境变量
启动yarn:
访问集群中的所有应用程序的默认端口号为8088,使用以下URL访问该服务。
查看web端:运行正常
查看节点情况:
运行wordcount实例检测:
在HDFS的根目录下创建一个目录input,将之前的test.txt上传到HDFS。
继续创建一个output输出目录,执行hadoop jar命令,结果输出到output/ part-r-00000文件下。
查看结果:
(报错:/output already exists)
删除,重新执行:
查看结果:
通过网页查看任务完成情况:
可以发现当hadoop集群运行时,会报警告:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
出现原因:Hadoop 没有成功加载本地库,所以使用了内置的 Java 类库。
解决方法:1. 直接在log中忽略warning;2. 替换hadoop本地库.
关闭hadoop
(分别关闭了namenodes,yarn,resourcemanager,nodemanager)
参考:
- Hadoop伪分布搭建,以及简单使用命令
- 安装Hadoop 本地模式测试Hadoop,wordcount
- Hadoop环境安装设置
- 02-Hadoop集群启动测试