Hadoop单机版搭建与WordCount Hello Wold

背景

  参加中国软件杯比赛,要求使用分布式集群进行大数据离线处理,并实现1000以上并发量,3秒一次请求(换算为至少2880万PV),于是学习hadoop,hive相关技术。

实现过程

1、hadoop的安装与启动
以下操作均在Ubuntu 16.04LTS下执行

  在hadoop官网下载最新的稳定release版hadoop,(本文撰写时为2.8.0),tar -zxvf解压到/usr/local下,配置JDK与Hadoop环境变量
由于JDK ubuntu自带并且配好环境变量,所以下面只展示Hadoop环境变量的配置方法
vim /etc/profile

1
2
export HADOOP_HOME=/usr/local/hadoop-2.8.0
export PATH=.:$HADOOP_HOME/bin:$JAVA_HOME/bin:$JRE_HOME/sbin:$PATH

至此,Hadoop环境变量配置完成
然后,cd到安装目录下,再cd sbin,使用如下命令单独拉起每个服务

1
2
3
4
./hadoop-daemon.sh --script hdfs start namenode
./hadoop-daemon.sh --script hdfs start datanode
./yarn-daemon.sh start resourcemanager
./yarn-daemon.sh start nodemanager

2、word count(单词计数) Hello World的运行

  在Hadoop安装目录下的share/hadoop/mapreduce目录中,有示例代码jar包,名为hadoop-mapreduce-examples-2.8.0.jar,于是不用手动编写代码直接就可以试验运行word count(单词计数)。
  先在本地磁盘上建两个存有单词的文件,以下步骤均在hadoop安装目录执行

1
2
echo "hello hadoop java" > file1.txt
echo "hello hadoop android" > file2.txt

然后,在HDFS上创建输入文件夹目录 input

1
bin/hadoop fs -mkdir input

然后,把本地硬盘上创建的文件传进HDFS的input文件夹里面:

1
bin/hadoop fs -put file*.txt input

直接运行Hadoop自带的运行 wordcount 例子的 jar 包

1
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.0.jar wordcount input/ output/wordcount1

这样生成的wordcount1是个目录,里面是结果的文本文件,用hdfs的cat进行文件连接,输出结果

1
bin/hadoop fs -cat output/wordcount1/*

得到结果

1
2
3
4
android 1
hadoop 2
hello 2
java 1


运行结果

参考文献

Hadoop单机版环境搭建及第一个示例
hadoop 启动问题,start-all.sh启动问题
hadoop-2.6.0运行WordCount