Hadoop环境搭建及WordCount实验详解
来源:互联网 发布:电脑笛子软件 编辑:程序博客网 时间:2024/04/30 16:30
Hadoop环境搭建及WordCount实验详解
一、实验内容
(1)Hadoop 环境搭建。
(2)Map-Reduce分布式编程。
二、实验步骤
1、集成环境搭建
(1)设置hostname(需要重新启动机器生效)
$ sudo vim /etc/hostname
(2)设置静态IP地址
$ ifconfig
(3)记录集群信息
机器名
用户名
密码
IP地址
master
jyneo
yj810904
192.168.50.188
slave1
jyneo
yj810904
192.168.50.137
slave2
jyneo
yj810904
192.168.50.138
(4)配置IP地址和机器名的映射关系
$ sudo vim /etc/hosts(每台机器均需要配置)
2、设置无密钥登录
(1)建立ssh服务
在三台机器上都安装 openssh,建立 ssh 服务:
$ sudo apt-get install openssh-server
(2)设置无密钥登录
>>>>在各节点生成密钥:$ ssh-keygen
执行上一步命令后,会在 /home/jyneo/ 目录下生成.ssh 文件夹。
>>>>将各slave节点的 id_rsa.pub 文件集中至 master
>>>>在slave1机器上执行命令:$ scp /home/jyneo/.ssh/id_rsa.pub jyneo@192.168.50.188:~/.ssh/slave1.pub
>>>>在slave2机器上执行命令:$ scp /home/jyneo/.ssh/id_rsa.pub jyneo@192.168.50.188:~/.ssh/slave2.pub
>>>>将各节点的 id_rsa.pub 中的内容追加到 authorized_keys 文件中
在hadoop_master机器上执行命令:
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ cat ~/.ssh/slave1.pub >> ~/.ssh/authorized_keys
$ cat ~/.ssh/slave2.pub >> ~/.ssh/authorized_keys
>>>>将 authorized_keys 文件分发到各节点:
$ scp ~/.ssh/authorized_keys jyneo@192.168.50.137:~/.ssh/
$ scp ~/.ssh/authorized_keys jyneo@192.168.50.138:~/.ssh/
3、手动配置 JDK
>>>>将文件夹 jdk1.7.0_79 拷贝到各节点
$ scp –r jdk1.7.0_79 jyneo@slave1:~/Cloud/
$ scp –r jdk1.7.0_79 jyneo@slave2:~/Cloud/
>>>>修改 /etc/profile 文件,在该文件最后追加如下信息:
export JAVA_HOME=/home/jyneo/Cloud/jdk1.7.0_79export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/libexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
>>>>更新 profile 文件:$ source /etc/profile
4、搭建 Hadoop 环境
(1)下载Hadoop。
(2)解压缩:将下载的压缩包移动到目标文件夹,并解压。
$ cp~/Downloads/hadoop-2.6.0.tar.gz ~/Cloud
$ tar –vzxfhadoop-2.6.0.tar.gz
(3)配置文件、配置目录:
$ cd hadoop-2.6.0/etc/hadoop
core-site.xml:
mapred-site.xml:
hdfs-site.xml:
yarn-site.xml:
hadoop-env.sh:
yarn-env.sh:
slaves:
>>>>将修改后的 Hadoop 文件分发到各节点
$auto_sync_simple.sh~/Cloud/hadoop-2.6.0 ~/Cloud(执行命令出错,这里我是直接拷贝到机器slave1和slave2上的)
>>>>启动 Hadoop(在 master 节点执行)
$ cd hadoop-2.6.0
$ bin/hdfs namenode –format
$ sbin/start-all.sh(./start-dfs.sh ./start-yarn.sh)
>>>>集群监控界面:
三、WordCount 实验
单词计数是最简单也是最能体现MapReduce思想的程序之一,可以称为MapReduce版"Hello World",该程序的完整代码可以在Hadoop安装包的"src/examples"目录下找到。单词计数主要完成功能是:统计一系列文本文件中每个单词出现的次数,代码如下所示;
import java.io.IOException;import java.util.StringTokenizer;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Job;import org.apache.hadoop.mapreduce.Mapper;import org.apache.hadoop.mapreduce.Reducer;import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;public class WordCount { public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable>{ private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(Object key, Text value, Context context ) throws IOException, InterruptedException { StringTokenizer itr = new StringTokenizer(value.toString()); while (itr.hasMoreTokens()) { word.set(itr.nextToken()); context.write(word, one); } } } public static class IntSumReducer extends Reducer<Text,IntWritable,Text,IntWritable> { private IntWritable result = new IntWritable(); public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { sum += val.get(); } result.set(sum); context.write(key, result); } } public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); Job job = Job.getInstance(conf, "word count"); job.setJarByClass(WordCount.class); job.setMapperClass(TokenizerMapper.class); job.setCombinerClass(IntSumReducer.class); job.setReducerClass(IntSumReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); System.exit(job.waitForCompletion(true) ? 0 : 1); }}
(1)创建本地的数据文件
在jyne/Cloud/hadoop-2.6.0下创建一个文件夹file用来存储本地原始数据,并在这个目录下创建2个文件,分别命名为【test1.txt】和【test2.txt】,分别在这2个文件中输入下列示例语句:
(2)在HDFS文件系统上创建input文件夹,作为输入文件目录。打开终端,输入下面指令:
$ bin/hadoop fs -mkdir /input
(3)上传本地file中文件到集群的input目录下。在终端依次输入下面指令:
$ cd hadoop-2.6.0
$ bin/hadoop fs -put /home/jyneo/Cloud/hadoop-2.6.0/file/test*.txt /input
(4)运行程序实例。在终端输入以下指令:
$ bin/hadoop jar /home/jyneo/Cloud/hadoop-2.6.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount /input /output
运行结果如下图所示:
Hadoop命令会启动一个JVM来运行这个MapReduce程序,并自动获得Hadoop的配置,同时把类的路径(及其依赖关系)加入到Hadoop的库中。以上就是Hadoop Job的运行记录,从这里可以看到,这个Job被赋予了一个ID号:job_201202292213_0002,而且得知输入文件有两个(Total input paths to process : 2),同时还可以了解map的输入输出记录(record数及字节数),以及reduce输入输出记录。
查看HDFS上output目录内容,在终端输入下面指令:
$ bin/hadoop fs -ls /output
从图中可以知道生成了两个文件,我们的结果在"part-r-00000"中。使用下面指令查看结果输出文件内容:
$ bin/hadoop fs -cat output/part-r-00000
输出结果如下图所示;
- Hadoop环境搭建及WordCount实验详解
- 搭建Hadoop伪分布式环境,及运行wordcount程序总结
- Hadoop集群搭建及wordcount测试
- Hadoop示例程序WordCount详解及实例
- Hadoop示例程序WordCount运行及详解
- Hadoop示例程序WordCount详解及实例
- Hadoop示例程序WordCount详解及实例 .
- Hadoop示例程序WordCount详解及实例
- Hadoop示例程序WordCount详解及实例
- Hadoop示例程序WordCount详解及实例
- Hadoop示例程序WordCount详解及实例
- Hadoop示例程序WordCount详解及实例
- Hadoop示例程序WordCount详解及实例
- Hadoop示例程序WordCount运行及详解
- Hadoop实验:wordcount
- hadoop-wordcount 实验总结
- hadoop hdfs搭建 mapreduce环境搭建 wordcount程序简单注释
- 安装Hadoop,搭建jdk环境,运行wordcount程序
- DAO层,Service层,Controller层、View层
- 【51Nod】1181 质数中的质数(质数筛法)
- 好用的排序函数-qsort解析及代码程序示例
- Java合并jar包方法
- jar命令解析
- Hadoop环境搭建及WordCount实验详解
- Restful 接口传递参数
- MySql存储日期类型用int、datetime还是varchar?
- 结合找工作浅谈写博客的感受
- 商超霸主之争:天猫节节败退 沦为京东陪练
- 工程基础
- SITF特征提取和描述
- Hadoop--HDFS
- C++ explicit关键字详解