Linux下Hadoop使用

概览

记录Hadoop安装使用过程遇到的问题与解决方案。注意安装Hadoop只是安装了HDFS和MapReduce两大组件。其他的想HBase是没有的,需要自己单独安装。

报错:Connection refused

运行hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar grep input output 'dfs[a-z.]+'报的错。

注意执行操作之前要先启动Hadoop,可以通过start-dfs.sh或者start-all.sh1。原因就是Hadoop未启动成功,通过jps看到namenode并未启动。比较奇怪的是安装的时候测试还是可以的,而且是完全按照官方文档来的。

问题就在官方文档…林子雨老师的Hadoop3.1.3安装教程提到了这点:

1
2
3
Hadoop 的运行方式是由配置文件决定的(运行 Hadoop 时会读取配置文件),因此如果需要从伪分布式模式切换回非分布式模式,需要删除 core-site.xml 中的配置项。

此外,伪分布式虽然只需要配置 fs.defaultFS 和 dfs.replication 就可以运行(官方教程如此),不过若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行。所以我们进行了设置,同时也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。

也就是说我们按照官网的方法配置core-site.xmlhdfs-site.xml的话,重启的时候必须重新format,否则就无法启动namenode!谁没事每次启动都去格式化依次,太坑了Orz

按照林子雨老师的方法配置就不会出现这个问题。对core-site.xml配置如下

1
2
3
4
5
6
7
8
9
10
11
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>

hdfs-site.xml配置如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<configuration>
<property>
<name>dfs.replication</name>
<value>1</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>

因为林老师是将Hadoop放在/usr/local, 而我是在/home/shensir/Application,所以将上面的/usr/local部分替换为/home/shensir/Application即可。

另外一点就是HDFS网页的访问地址在Linux是http://localhost:9870,好像也有的是50070端口的。我这里测试是前者。

报错:Retrying connect to server: 0.0.0.0/0.0.0.0:8032

也是运行hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar grep input output 'dfs[a-z.]+'时候出错。推测是YARN配置和上面的冲突了,把YARN的配置全部清空再重启就可以了。

1. 注意这里在加入环境变量后调用的, 其位于sbin文件夹下。

本文标题:Linux下Hadoop使用

文章作者:不秩稚童

发布时间:2020年02月23日 - 12:01:05

最后更新:2020年02月23日 - 18:19:39

原始链接:http://datahonor.com/2020/02/23/Linux下Hadoop使用/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

击蒙御寇