记录踩得坑以及部署环境流程。
搭建的是伪分布Hadoop
- 首先环境需要安装zookeeper。这个好装,不多说
- 其次比较复杂的是安装openssh。我的Linux系统是centos 7 mini版本。安装openssh之前的准备工作有很多。
需要安装的tar包有:
- libpcap-1.8.1.tar.gz
- zlib-1.2.8.tar.gz
- perl-5.22.4.tar.gz
- openssl-1.0.2j.tar.gz
- openssh-7.2p2.tar.gz
顺序是先perl,再zlib。之后就随意了。因为zlib中会依赖perl5
安装openssh主要目的是设置免密登录。方便hadoop搭建
- 安装hadoop。
需要配置Java环境变量,以及Hadoop的环境变量。Java_HOME有时候加载不到的问题可以百度,把hadoop-evn.cmd配置文件大约第25行改掉就可以了。
主要注意的是core-site.xml,hdfs-site.xml,yarn-site.xml这三个配置文件的配置
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.1.103:9000/</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/u/hadoop-2.7.6/tmp</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.http-address</name>
<value>192.168.1.103:50070</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.1.103:50090</value>
</property>
<!-- 指定HDFS副本数量 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--指定NameNode的存储路径-->
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/u/hadoop-2.7.6/namenode</value>
</property>
<!--指定DataNode的存储路径-->
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/u/hadoop-2.7.6/datanode</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>192.168.1.103</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
然后到hadoop-2.7.6/sbin/目录下面执行start-all.sh就可以一次性启动所有角色了。2.x启动成功后是这样的:
运行第一个WordCount程序
我看的书是Hadoop实战。里面的程序有点老,导致自己写的WordCount有很多方法ClassNotFound。但是hadoop是自带第一个wordcount程序的。可以看到它的源码。现在先使用它自带的wordcount来测试下这个环境是否可行
- 生成输入文件
echo "I love Java I love Hadoop I love BigData Good Good Study, Day Day Up" > wc.txt
- 在Hdfs上创建文件夹,把wc.txt上传到Hdfs
hdfs dfs -mkdir -p /input/wordcount
hdfs dfs -put wc.txt /input/wordcount - 然后就可以执行了。输出文件目录是不存在的
hadoop jar /home/u/hadoop-2.7.6/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar wordcount /input/wordcount /output/wordcount
结果: