Hadoop之HelloWorld
Hadoop开始:
1. 下载最新的发行版,解压到你喜欢的路径。
2. 配置,Hadoop的配置文件位于~/hadoop/conf/ 目录下。这里我先只配置了core-site.xml文件。
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/Jack/dfs</value>
</property>
</configuration>
上面我指定了hadoop的DFS文件系统的路径。
3. 格式化DFS系统,输入命令: > ./hadoop namenode -format
4. 启动Hadoop,输入命令: > ./start-all.sh
**到这里Hadoop的启动已经正常,可以在端口50070和50030查看集群的状态。
======================================================================
第一个程序:HadoopHelloWorld
import java.io.IOException;
import java.util.*;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapred.*; public class HadoopHelloWorld { public static class Map extends MapReduceBase implements Mapper<LongWritable,Text,Text,IntWritable> {
private final static IntWritable one=new IntWritable(1);
private Text word=new Text(); public void map(LongWritable key, Text value, OutputCollector<Text,IntWritable> output, Reporter reporter)
throws IOException {
String line= value.toString();
StringTokenizer tokenizer=new StringTokenizer(line);
while(tokenizer.hasMoreTokens()) {
word.set(tokenizer.nextToken());
output.collect(word, one);
}
}
} public static class Reduce extends MapReduceBase implements Reducer<Text,IntWritable,Text,IntWritable> {
public void reduce(Text key,Iterator<IntWritable> values,OutputCollector<Text,IntWritable>output, Reporter reporter)
throws IOException{
int sum=0;
while(values.hasNext()) {
sum+=values.next().get();
}
output.collect(key, new IntWritable(sum)); }
} public static void main(String args[]) throws Exception {
JobConf conf=new JobConf(HadoopHelloWorld.class);
conf.setJobName("wordcount"); conf.setOutputKeyClass(Text.class);
conf.setOutputValueClass(IntWritable.class); conf.setMapperClass(Map.class);
conf.setReducerClass(Reduce.class); conf.setInputFormat(TextInputFormat.class);
conf.setOutputFormat(TextOutputFormat.class); FileInputFormat.setInputPaths(conf, new Path(args[0]));
FileOutputFormat.setOutputPath(conf, new Path(args[1])); JobClient.runJob(conf);
} }
HadoopHelloWorld
需要引入的基础包:
JRE system Library
Hadoop-core.jar
commons-logging.jar
说明一下,别的文档中没有将需要commons-logging.jar 这个包,可以我的没有这个包一直报错。java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
以上工作做好了之后,编译HadoopHelloWorld.java文件就好,将生成的class文件放入文件夹~/source/java2013/HadoopHelloWorld/,然后打成一个jar包。
[Jack@win bin]$ jar -cvf HadoopHelloWorld.jar -C ~/source/java2013/HadoopHelloWorld/ .
上传2个input文件作为程序输入[ file01,file02 ]。
[Jack@win bin]$./ hadoop fs -mkdir input
[Jack@win bin]$ ./hadoop dfs -put ~/source/java2012/FirstJar/input/file* input
运行程序:
[Jack@win bin]$./hadoop jar HadoopHelloWorld.jar HadoopHelloWorld input output
13/06/20 03:16:44 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same.
13/06/20 03:16:45 INFO util.NativeCodeLoader: Loaded the native-hadoop library
13/06/20 03:16:45 WARN snappy.LoadSnappy: Snappy native library not loaded
13/06/20 03:16:45 INFO mapred.FileInputFormat: Total input paths to process : 4
13/06/20 03:16:45 INFO mapred.JobClient: Running job: job_201306200226_0002
13/06/20 03:16:46 INFO mapred.JobClient: map 0% reduce 0%
13/06/20 03:16:59 INFO mapred.JobClient: map 40% reduce 0%
13/06/20 03:17:05 INFO mapred.JobClient: map 80% reduce 0%
13/06/20 03:17:08 INFO mapred.JobClient: map 80% reduce 26%
13/06/20 03:17:11 INFO mapred.JobClient: map 100% reduce 26%
13/06/20 03:17:23 INFO mapred.JobClient: map 100% reduce 100%
13/06/20 03:17:28 INFO mapred.JobClient: Job complete: job_201306200226_0002
13/06/20 03:17:28 INFO mapred.JobClient: Counters: 30
13/06/20 03:17:28 INFO mapred.JobClient: Job Counters
13/06/20 03:17:28 INFO mapred.JobClient: Launched reduce tasks=1
13/06/20 03:17:28 INFO mapred.JobClient: SLOTS_MILLIS_MAPS=32074
13/06/20 03:17:28 INFO mapred.JobClient: Total time spent by all reduces waiting after reserving slots (ms)=0
13/06/20 03:17:28 INFO mapred.JobClient: Total time spent by all maps waiting after reserving slots (ms)=0
13/06/20 03:17:28 INFO mapred.JobClient: Launched map tasks=5
13/06/20 03:17:28 INFO mapred.JobClient: Data-local map tasks=3
13/06/20 03:17:28 INFO mapred.JobClient: SLOTS_MILLIS_REDUCES=23534
13/06/20 03:17:28 INFO mapred.JobClient: File Input Format Counters
13/06/20 03:17:28 INFO mapred.JobClient: Bytes Read=54
13/06/20 03:17:28 INFO mapred.JobClient: File Output Format Counters
13/06/20 03:17:28 INFO mapred.JobClient: Bytes Written=41
13/06/20 03:17:28 INFO mapred.JobClient: FileSystemCounters
13/06/20 03:17:28 INFO mapred.JobClient: FILE_BYTES_READ=104
13/06/20 03:17:28 INFO mapred.JobClient: HDFS_BYTES_READ=541
13/06/20 03:17:28 INFO mapred.JobClient: FILE_BYTES_WRITTEN=128481
13/06/20 03:17:28 INFO mapred.JobClient: HDFS_BYTES_WRITTEN=41
13/06/20 03:17:28 INFO mapred.JobClient: Map-Reduce Framework
13/06/20 03:17:28 INFO mapred.JobClient: Map output materialized bytes=128
13/06/20 03:17:28 INFO mapred.JobClient: Map input records=2
13/06/20 03:17:28 INFO mapred.JobClient: Reduce shuffle bytes=122
13/06/20 03:17:28 INFO mapred.JobClient: Spilled Records=16
13/06/20 03:17:28 INFO mapred.JobClient: Map output bytes=82
13/06/20 03:17:28 INFO mapred.JobClient: Total committed heap usage (bytes)=912719872
13/06/20 03:17:28 INFO mapred.JobClient: CPU time spent (ms)=5190
13/06/20 03:17:28 INFO mapred.JobClient: Map input bytes=50
13/06/20 03:17:28 INFO mapred.JobClient: SPLIT_RAW_BYTES=487
13/06/20 03:17:28 INFO mapred.JobClient: Combine input records=0
13/06/20 03:17:28 INFO mapred.JobClient: Reduce input records=8
13/06/20 03:17:28 INFO mapred.JobClient: Reduce input groups=5
13/06/20 03:17:28 INFO mapred.JobClient: Combine output records=0
13/06/20 03:17:28 INFO mapred.JobClient: Physical memory (bytes) snapshot=932745216
13/06/20 03:17:28 INFO mapred.JobClient: Reduce output records=5
13/06/20 03:17:28 INFO mapred.JobClient: Virtual memory (bytes) snapshot=2390478848
13/06/20 03:17:28 INFO mapred.JobClient: Map output records=8
Result
Hadoop之HelloWorld的更多相关文章
- 在eclipse上跑hadoop的helloworld
关于hadoop的用处什么我就不说了,在这里记录下在eclipse上第一次跑hadoop遇到的问题吧~ hadoop的安装我就不说啦,网上教程一大堆~我直接用的公司的Linux上的hadoop. ec ...
- Hadoop版Helloworld之wordcount运行示例
1.编写一个统计单词数量的java程序,并命名为wordcount.java,代码如下: import java.io.IOException; import java.util.StringToke ...
- Hadoop 调研笔记
由于从各光伏电站采集的数据量较大,必须解决海量数据的查询.分析的问题.目前主要考虑两种方式:1. Hadoop大数据技术:2. Oracle(数据仓库)+BI: 本文仅介绍hadoop的技术 ...
- Hadoop阅读笔记(一)——强大的MapReduce
前言:来园子已经有8个月了,当初入园凭着满腔热血和一脑门子冲动,给自己起了个响亮的旗号“大数据 小世界”,顿时有了种世界都是我的,世界都在我手中的赶脚.可是......时光飞逝,岁月如梭~~~随手一翻 ...
- 如何在Hadoop的MapReduce程序中处理JSON文件
简介: 最近在写MapReduce程序处理日志时,需要解析JSON配置文件,简化Java程序和处理逻辑.但是Hadoop本身似乎没有内置对JSON文件的解析功能,我们不得不求助于第三方JSON工具包. ...
- Hadoop实战之四~hadoop作业调度详解(2)
这篇文章将接着上一篇wordcount的例子,抽象出最简单的过程,一探MapReduce的运算过程中,其系统调度到底是如何运作的. 情况一:数据和运算分开的情况 wordcount这个例子的是hado ...
- Hadoop集群配置搭建
环境:Centos 6.9,Hadoop 2.7.1,JDK 1.8.0_161,Maven 3.3.9 前言: 1.配置一台master服务器,两台或多台slave服务器. 2.master可 ...
- How to Run a .Jar Java File
.jar files are used for archiving, archive unpacking. One of the essential features of jar file is l ...
- shell基本用法
shell是一个命令行解释器,它接收应用程序/ 用户命令,然后调用操作系统内核:功能强大的编程语言: 1. Shell解析器 Linux提供的Shell解析器有: [kris@hadoop datas ...
随机推荐
- P2727 Stringsobits
01串 Stringsobits 题目背景 考虑排好序的N(N<=31)位二进制数. 题目描述 他们是排列好的,而且包含所有长度为N且这个二进制数中1的位数的个数小于等于L(L<=N)的数 ...
- MySQL(二)--事务与视图
一.事务 1.提交 2.回滚 3.ACID特性 二.视图 1.创建视图 2.删除视图 3.更新视图 4.使用视图 三.子查询 1. 使用子查询 2. 标量子查询 3. 关联子查询 一.事务 在 RDB ...
- Spring事务管理的两种方式
参考文档: http://www.iteye.com/topic/1123347 http://blog.csdn.net/lcj8/article/details/2835432 PS:好像还是tx ...
- 【Linux相识相知】bash的基础特性
命令历史 shell进程会记录用户提交执行过的命令 可以是用history查看: [root@localhost dev]# history ss -tnl ifconfig vi /etc/sysc ...
- JSON.parse()与JSON.stringify()的区别
JSON.parse()[从一个字符串中解析出json对象] 例子: //定义一个字符串 var data='{"name":"goatling"}' //解析 ...
- 获取子物体数量---Transform.childCount
如何判断一个物体下是否有子物体?getchild(0)!=null?显然不可取 那去获取拿到子物体数量?transform.GetChildCount();可以解决 但在新版本中已被弃用,可用tran ...
- 微信小程序简述
最近在公司实习,经理要求做一个微信小程序,晚上闲时来写一下. 微信小程序问世没多久,但毋庸置疑的是在不久的将来,它可以替代掉很多的APP.个人认为它的优势在于占用资源少,可以做到即用即走,对于一些使用 ...
- Klass与Oop
前段时间,一直在看<Hotspot实战>,顺便编译了一份OpenJDK的源码,然后就在eclipse里面调试起来. 虽然我的入门语言是c/c++,但是被Java拉过来好几年了,现在再看源码 ...
- Abp(.NetCore)开发与发布过程
.NetCore 项目开发正当火热,ABP也推出了.NetCore的版本.趁此机会学习.NetCore的开发与发布过程.以下是本人的踩坑经验. 在ABP官网提供单页面应用开发框架(AngularJs) ...
- linux自动化创建补丁
BUS #!/bin/sh #判断H5_BD_${BD_data}目录是否存在 BD_data=$(date +"%F") #当日打包多次的情况下,初始化补丁目录 if [ -d ...