`

Hadoop上传、下载以及word count简单示例

 
阅读更多

首先看一个hadoop自带的example

1.启动 start-dfs.sh 


启动start-yarn.sh


2.输入http://hadoop-0000:50070/,查看HDFS

 

3.  上传一个文件,比如JDK

hadoop fs -put jdk-8u77-linux-x64.tar.gz hdfs://hadoop-0000:9000/

 

4.查看HDFS


5.下载一个文件

hadoop fs -get hdfs://hadoop-0000:9000/jdk-8u77-linux-x64.tar.gz


 

6. 创建两个目录

hadoop fs -mkdir /wordcount
hadoop fs -mkdir /wordcount/input


 

7.新建一个文件,输入一些数据,保存

上传

hadoop fs -put wordcount.txt /wordcount/input


 
8.测试wordcount

hadoop jar hadoop-mapreduce-examples-2.6.4.jar wordcount /wordcount/input /wordcount/output


 

9.查看输出

hadoop fs -ls /wordcount/output


 
 

10.查看结果

hadoop fs -cat /wordcount/output/part-r-00000


 

接着自己实现一个word count的简单示例

Maven Dependency

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>org.fool.hadoop</groupId>
	<artifactId>hadoop</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>hadoop</name>
	<url>http://maven.apache.org</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<hadoop.version>2.6.4</hadoop.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.apache.hadoop</groupId>
			<artifactId>hadoop-common</artifactId>
			<version>${hadoop.version}</version>
		</dependency>

		<dependency>
			<groupId>org.apache.hadoop</groupId>
			<artifactId>hadoop-hdfs</artifactId>
			<version>${hadoop.version}</version>
		</dependency>

		<dependency>
			<groupId>org.apache.hadoop</groupId>
			<artifactId>hadoop-client</artifactId>
			<version>${hadoop.version}</version>
		</dependency>

		<dependency>
			<groupId>jdk.tools</groupId>
			<artifactId>jdk.tools</artifactId>
			<version>1.8</version>
			<scope>system</scope>
			<systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
		</dependency>

		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.5.1</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.19.1</version>
				<configuration>
					<skip>true</skip>
				</configuration>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-assembly-plugin</artifactId>
				<version>2.6</version>
				<configuration>
					<appendAssemblyId>false</appendAssemblyId>
					<descriptorRefs>
						<descriptorRef>jar-with-dependencies</descriptorRef>
					</descriptorRefs>
					<archive>
						<manifest>
							<mainClass>org.fool.hadoop.mapred.WordCountJob</mainClass>
						</manifest>
					</archive>
				</configuration>
				<executions>
					<execution>
						<id>make-assembly</id>
						<phase>package</phase>
						<goals>
							<goal>assembly</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>

 

WordCountMapper.java

package org.fool.hadoop.mapred;

import java.io.IOException;

import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

import com.google.common.base.Splitter;

public class WordCountMapper extends Mapper<LongWritable, Text, Text, LongWritable> {
	@Override
	protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, LongWritable>.Context context)
			throws IOException, InterruptedException {

		String line = value.toString();
		
		Iterable<String> words = Splitter.on(" ").split(line);
		
		for (String word : words) {
			context.write(new Text(word), new LongWritable(1));
		}
	}
}

 

WordReducer.java

package org.fool.hadoop.mapred;

import java.io.IOException;

import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

public class WordCountReducer extends Reducer<Text, LongWritable, Text, LongWritable> {

	@Override
	protected void reduce(Text key, Iterable<LongWritable> values,
			Reducer<Text, LongWritable, Text, LongWritable>.Context context) throws IOException, InterruptedException {

		long count = 0;
		
		for (LongWritable value : values) {
			count += value.get();
		}
		
		context.write(key, new LongWritable(count));
	}
}

 

WordCountJob.java

package org.fool.hadoop.mapred;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

public class WordCountJob {
	public static void main(String[] args) throws Exception {
		Configuration conf = new Configuration();

		Job job = Job.getInstance(conf);

		job.setJarByClass(WordCountJob.class);

		job.setMapperClass(WordCountMapper.class);
		job.setReducerClass(WordCountReducer.class);

		job.setMapOutputKeyClass(Text.class);
		job.setMapOutputValueClass(LongWritable.class);

		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(LongWritable.class);

		FileInputFormat.setInputPaths(job, new Path("hdfs://hadoop-0000:9000/wc/input"));
		FileOutputFormat.setOutputPath(job, new Path("hdfs://hadoop-0000:9000/wc/output"));

		job.waitForCompletion(true);
	}
}

 

 写完之后,maven install打成一个JAR包,上传到Linux,接着创建两个目录,上传一个source


 

运行如下命令

hadoop jar hadoop-0.0.1-SNAPSHOT.jar

神奇的事情发生了


 

最后,查看输出结果


 

 

 

 

 

  • 大小: 23.1 KB
  • 大小: 20.3 KB
  • 大小: 7.2 KB
  • 大小: 17 KB
  • 大小: 7.9 KB
  • 大小: 4.1 KB
  • 大小: 15.3 KB
  • 大小: 10.3 KB
  • 大小: 3.4 KB
  • 大小: 16.5 KB
  • 大小: 11.8 KB
  • 大小: 94.1 KB
  • 大小: 12.5 KB
  • 大小: 18.3 KB
  • 大小: 19.5 KB
  • 大小: 7.6 KB
  • 大小: 13.7 KB
  • 大小: 98.6 KB
  • 大小: 14.6 KB
1
6
分享到:
评论

相关推荐

    Hadoop- 单词计数(Word Count)的MapReduce实现.doc

    Hadoop单词计数(Word Count)的MapReduce实现 Hadoop是一个基于Java的开源大数据处理框架,它提供了一个分布式计算模型,称为MapReduce,用于处理大规模数据。MapReduce模型主要由两个阶段组成:Map阶段和Reduce...

    hadoop简单单词统计

    2. **Word Count案例**:这是一个经典的MapReduce示例,用于统计文本中的单词数量。在Map阶段,程序会读取输入的文本文件,将每一行分割成单词,每个单词与1形成键值对。在Reduce阶段,相同的单词键会被归并,对应的...

    hadoop介绍以及使用规则

    例如,通过Hadoop进行词频统计(Word Count)是一个经典的入门示例,它展示了如何利用MapReduce处理文本数据,计算每个单词的出现次数。 Hadoop 的流行还催生了一系列相关的生态系统工具,如Hive(用于数据仓库和...

    Hadoop集群中WordCount示例

    WordCount是Hadoop中最经典的入门级示例程序之一,它主要用于演示如何在Hadoop集群中进行简单的文本词频统计。WordCount程序通常包含以下几个核心部分:输入数据的准备、Mapper类的实现、Reducer类的实现以及程序的...

    大数据实验报告Hadoop编程实现wordcount单词统计程序附源码.doc

    大数据实验报告 Hadoop 编程实现 wordcount 单词统计程序附源码 本实验报告旨在介绍使用 Hadoop 编程实现 wordcount 单词统计程序的步骤和代码实现。实验的目的在于熟悉 Hadoop 虚拟机的安装与环境的配置,初步理解...

    大数据MapReduce实现基于白名单的Word Count

    本示例中的“大数据MapReduce实现基于白名单的Word Count”是一个具体的应用案例,旨在通过MapReduce算法统计指定白名单词汇在文本数据中的出现频率。以下是对这个主题的详细解释: 1. **MapReduce模型**: ...

    windows下安装云计算环境hadoop的完整步骤

    例如,运行 word count 示例: ```sh $ bin/hadoop jar hadoop-*-examples.jar grep input output 'dfs[a-z.]+' ``` 这将运行一个简单的文本匹配任务,将结果输出到 `output` 目录下。可以通过命令 `$ bin/hadoop...

    安装hadoop spark

    - 创建一个简单的Spark应用程序,例如Word Count。 - 测试程序是否能在本地或集群环境中正常运行。 #### 使用Spark的功能 1. **Spark Core**: - RDD(弹性分布式数据集):是Spark中最基本的数据抽象,可以...

    传智黑马赵星老师hadoop七天课程资料笔记-第三天(全)

    8. **wc流程.xls** - wc是Hadoop自带的Word Count示例,这个Excel文件可能分析了Word Count程序的执行流程,展示每个步骤的时间和资源消耗。 9. **day3** - 这可能是一个包含其他辅助文件或笔记的目录,补充了第三...

    hadoop 运行成功代码(wordcount)

    2. 将测试数据上传到Hadoop的HDFS(Hadoop Distributed File System)。 3. 使用Hadoop命令提交WordCount程序,指定输入和输出路径。 4. Hadoop集群执行任务,完成后在指定的输出路径下生成结果文件。 在实际应用中...

    hadoop.dll-winutils.exe

    为确保IDE能正确运行Word Count示例,需要在项目构建路径中添加Hadoop的相关库,包括`hadoop-core.jar`、`hadoop-client.jar`等,并配置好Hadoop的运行环境,包括HADOOP_HOME、JAVA_HOME等环境变量。 在给定的...

    ( Hadoop Streaming编程实战(C++、PHP、Python).pdf )

    Hadoop Streaming是一个非常有用的工具,它能够使得任何用编程语言实现的程序能够在Hadoop MapReduce框架中运行。Hadoop Streaming利用标准输入和标准输出来实现程序与MapReduce框架之间的通信。这个特性使得已经...

    Java访问Hadoop集群源码

    Job job = Job.getInstance(conf, "word count"); job.setJarByClass(WordCount.class); job.setMapperClass(TokenizerMapper.class); job.setCombinerClass(IntSumReducer.class); job.setReducerClass...

    Hadoop和Spark初学者指南:基础安装与实践应用 0基础!!易懂!!.html

    接着,文章分步骤指导如何下载、安装及配置Hadoop和Spark,并通过示例展示了如何进行基本的操作和任务处理,如在Hadoop上上传和读取文件,在Spark上执行Word Count任务。此外,指南还提供了常见问题的解决方案,并...

    使用命令行编译打包运行自己的MapReduce程序 Hadoop2.6.0

    在Hadoop 2.6.0中,运行一个简单的MapReduce示例——WordCount,至少需要以下三个JAR文件: - `$HADOOP_HOME/share/hadoop/common/hadoop-common-2.6.0.jar` - `$HADOOP_HOME/share/hadoop/mapreduce/hadoop-...

    WordCount2_hadoopwordcount_

    在Hadoop生态系统中,`WordCount`程序是一个经典的示例,用于演示分布式计算的基本原理。在标题中的"WordCount2_hadoopwordcount_"可能指的是Hadoop WordCount的第二个版本,通常是在Hadoop 2.x环境下运行。这个程序...

    Hadoop-1.2.1 QQ推荐好友例子

    压缩包内的"worldCount" 文件名可能代表了一个经典的Hadoop MapReduce示例,"Word Count"。在这个例子中,程序会统计输入文本中每个单词出现的次数。这通常被用作MapReduce的入门教学,因为它简单易懂,同时展示了...

    hadoop mapreduce 例子项目,运行了单机wordcount

    通过Maven,开发者可以轻松地管理和构建Hadoop项目,因为它能自动下载所需的依赖库,并按照特定的生命周期来编译、测试和打包代码。 WordCount程序是Hadoop MapReduce的入门示例,它由两个阶段组成:Map阶段和...

    基于ubuntu安装Hadoop详细过程

    本次实验的目标是在Mac虚拟机上使用Ubuntu系统安装配置Hadoop环境,并运行一个简单的WordCount示例程序,旨在熟悉Hadoop的安装配置流程及基本使用方法。 #### 实验环境 - **操作系统**: Ubuntu (推荐最新稳定版) -...

Global site tag (gtag.js) - Google Analytics