linux hadoop实例应用,Hadoop在Linux下伪分布式执行wordcount实例的操作步骤

Step1. 启动hadoop

进入hadoop安装目录,然后执行命令启动hadoop所有进程

$ bin/start-all.sh然后,查看所有进程

$ jps6112 Jps

5412 JobTracker

6452 NameNode

6534 DateNode

7552 TaskTracker

8653 Secondary NameNode

Step2. 输入文件

在hadoop安装目录下用mkdir命令新建一个文件夹input,进入input文件夹,分别在file0,file1文件里

写入内容:

$ echo "hello Kitty hello Hadoop hello World"

>file0$ echo "hello Hadoop hello oLHHo

hello Leon" >file1

Step3. 复制input文件夹到HDFS的根目录下

wordcount例子不能再本地运行,复制到hadoop分布式系统上才能运行,

$ bin/hadoop dfs -put input in //将文件夹input复制到HDFS下并重命名为in

$ bin/hadoop dfs -ls //查看已上传文件及路径

Found 1 items

drwxr-xr-x -

olhho\administrator supergroup 0

2014-10-1514:12

/user/olhho/administrator/in

Step4. 执行wordcount的例子

$ bin/hadoop jar hadoop-0.20.2-examples.jar wordcount in

out //输入文件为in,输出文件为out

14/10/15 14:14:40 INFO input.FileInputFormat:

Total input paths to process : 2

14/10/15 14:14:41 INFO mapred.JobClient: Running job:

job_201410151358_0001

14/10/15 14:14:42 INFO mapred.JobClient: map 0%

reduce 0%

14/10/15 14:14:55 INFO mapred.JobClient: map 66%

reduce 0%

14/10/15 14:14:58 INFO mapred.JobClient: map 100%

reduce 0%

14/10/15 14:15:07 INFO mapred.JobClient: map 100%

reduce 100%

14/10/15 14:15:09 INFO mapred.JobClient: Job complete:

job_201410151358_0001

14/10/15 14:15:09 INFO mapred.JobClient: Counters: 17

14/10/15 14:15:09 INFO

mapred.JobClient: Map-Reduce

Framework

14/10/15 14:15:09 INFO

mapred.JobClient: Combine output records=12

14/10/15 14:15:09 INFO

mapred.JobClient: Spilled Records=12

14/10/15 14:15:09 INFO

mapred.JobClient: Reduce input records=6

14/10/15 14:15:09 INFO

mapred.JobClient: Reduce output records=4

14/10/15 14:15:09 INFO

mapred.JobClient: Map input records=2

14/10/15 14:15:09 INFO

mapred.JobClient: Map output records=12

14/10/15 14:15:09 INFO

mapred.JobClient: Map output bytes=61

14/10/15 14:15:09 INFO

mapred.JobClient: Reduce shuffle bytes=91

14/10/15 14:15:09 INFO

mapred.JobClient: Combine input records=6

14/10/15 14:15:09 INFO

mapred.JobClient: Reduce input groups=4

14/10/15 14:15:09 INFO

mapred.JobClient: FileSystemCounters

14/10/15 14:15:09 INFO

mapred.JobClient: HDFS_BYTES_READ=37

14/10/15 14:15:09 INFO

mapred.JobClient: FILE_BYTES_WRITTEN=347

14/10/15 14:15:09 INFO

mapred.JobClient: FILE_BYTES_READ=160

14/10/15 14:15:09 INFO

mapred.JobClient: HDFS_BYTES_WRITTEN=33

14/10/15 14:15:09 INFO

mapred.JobClient: Job

Counters

14/10/15 14:15:09 INFO

mapred.JobClient: Launched map tasks=3

14/10/15 14:15:09 INFO

mapred.JobClient: Launched reduce tasks=1

14/10/15 14:15:09 INFO

mapred.JobClient: Data-local map tasks=3

$ bin/hadoop dfs -ls //查看out所在路径

Found 2 items

drwxr-xr-x -

olhho\administrator supergroup 0 2014-10-15 14:12

/user/olhho/administrator/in

drwxr-xr-x -

olhho\administrator supergroup 0 2014-10-15 14:15

/user/olhho/administrator/out

Step5. 查看输出文件内容

$ bin/hadoop dfs -cat

/user/olhho/administrator/out/*Kitty 1

Hadoop 2

hello 6

World 1

oLHHo 1

Leon 1

也可以把输出文件从HDFS上复制到本地文件系统下查看:

$ bin/hadoop dfs -get out output

//复制out并重命名为output

$ cat output/*Kitty 1

Hadoop 2

hello 6

World 1

oLHHo 1

Leon 1

说明:wordcount案例的功能是统计单词个数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Hadoop分布式实例详细代码分析: 1. 配置Hadoop集群: 在多个服务器上安装Hadoop,并进行配置以创建一个Hadoop集群。这些服务器可以是物理服务器或虚拟机。 2. 准备数据: 将需要处理的数据上传到Hadoop集群中的HDFS(Hadoop分布式文件系统)。可以使用以下命令将本地文件上传到HDFS: ``` hdfs dfs -put local_file_path hdfs_file_path ``` 3. 编写MapReduce程序: 编写MapReduce程序来处理上传到HDFS的数据。以下是一个简单的单词计数MapReduce程序实现: ```java import java.io.IOException; 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 { String[] words = value.toString().split(" "); for (String w : words) { word.set(w); 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); } } ``` 这个MapReduce程序会对上传到HDFS的数据进行单词计数。其中,Mapper类用于将输入数据分割成单词,然后输出一个键-值对,其中键是单词,值为1。Reducer类用于将相同键的值相加,然后输出键-值对,其中键为单词,值为单词出现的次数。 4. 运行MapReduce程序: 将编写的MapReduce程序提交到Hadoop集群上运行。使用以下命令提交MapReduce程序: ``` hadoop jar jar_file_path input_path output_path ``` 其中,jar_file_path是编译后的MapReduce程序的jar包路径;input_path是上传到HDFS的数据的路径;output_path是MapReduce程序输出结果的路径。 5. 获取结果: 查看MapReduce程序的运行结果,并将结果下载到本地计算机中进行分析。使用以下命令查看MapReduce程序的运行结果: ``` hdfs dfs -cat output_path/part-r-00000 ``` 其中,output_path是MapReduce程序输出结果的路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值