`
mshijie
  • 浏览: 96261 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Hadoop Getting Started

阅读更多

本文描述在ubuntu上安装Hadoop,并在Pseudo-Distributed Operation模式下运行一个WordCount的Demo。

 

Step1

安装必要的软件:jdk,ssh。

在ubuntu下可以使用apt安装。

sudo apt-get install openjdk-6-jdk 
sudo apt-get install ssh

ssh安装完成后需要做一个特殊的设置。Hadoop使用ssh对集群的机器进行控制,需要让ssh无密码的登录远程机器,本文使用单击模拟分布环境,只要能无密码登录到localhost即可。

首先使用 ssh-keygen 命令按提示生成ssh密钥对。

在使用ssh-copy-id user@localhost,把公钥复制到authorized_keys中。

最后验证一下能否ssh localhost无密码登录。

Step2

下载hadoop-0.20.2.tar.gz ,解压。并把bin目录添加到PATH中。

配置hadoop/conf/hadoop-env.sh,添加JAVA_HOME环境变量

export JAVA_HOME="/usr/lib/jvm/java-6-openjdk"

 

分别配置conf/core-site.xml,conf/hdfs-site.xml,conf/mapred-site.xml三个hadoop主要的配置文件。

<configuration>
  <property>
    <name>fs.default.name</name>
    <value>hdfs://localhost:9000</value>
  </property>
</configuration>
 
<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
</configuration>
 
<configuration>
  <property>
    <name>mapred.job.tracker</name>
    <value>localhost:9001</value>
  </property>
</configuration>

 以上配置告诉hadoop在本机同时启动jobtracker,tasktracker,namenode,datanode,在本机模拟分布式的计算环境。

Step3

格式化一个新的分布式文件系统

hadoop namenode -format

 

启动所有的服务

start-all.sh

通过web UI查看namenode,jobtracker的状态。页面打开后表示hadoop启动完毕。

NameNode - http://localhost:50070/

JobTracker - http://localhost:50030/

Step4

编写简单WordCount Demo。需要把hadoop-0.20.2-core.jar api添加到classpath下。如果使用maven构建项目,可以添加以下依赖。

<dependency>
       <groupId>org.apache.hadoop</groupId>
       <artifactId>hadoop-core</artifactId>
       <version>0.20.2</version>
</dependency>
 

代码如下。

public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable> {

    @Override
    protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {

        String line = value.toString();
        StringTokenizer tokenizer = new StringTokenizer(line);
        while(tokenizer.hasMoreTokens()){
            context.write(new Text(tokenizer.nextToken()), new IntWritable(1));
        }

    }
}
 
public class WordCountReducer extends Reducer<Text, IntWritable, Text, IntWritable> {

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

        int count = 0;
        for (IntWritable value : values) {
            count++;
        }
        context.write(key, new IntWritable(count));
    }
}
 
public class WordCountJobConf {

    public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
        if (args.length != 2) {
            System.err.println("Usage: NewMaxTemperature <input path> <output path>");
            System.exit(-1);
        }
        Job job = new Job();
        job.setJarByClass(WordCountJobConf.class);
        FileInputFormat.addInputPath(job, new Path(args[0]));
        FileOutputFormat.setOutputPath(job, new Path(args[1]));
        job.setMapperClass(WordCountMapper.class);
        job.setReducerClass(WordCountReducer.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);

        System.exit(job.waitForCompletion(true) ? 0 : 1);
    }


}

 编译项目打包为jar wordcount.jar(不需要包含依赖)

Step5

准备wordcount的输入文本stuff.txt,并复杂到hdfs上。

创建input目录。

hadoop dfs -mkdir input

hadoop dfs -put stufff.txt input

 

最后运行wordcount,注意output目录,不应该存在。

hadoop jar wordcount.jar WordCountJobConf input output

 

map和reduce都运行完成可以,可以到output查看计算结果。

hadoop dfs -ls output

hadoop dfs -cat output/part-r-00000

 

wordcount程序简单分析

map方法使用hadoop默认的TextInputFormat从input目录读取文件,并把每一行作为一个输入,key为行号,value为该行文本内容。map方法,从数据中提取所有的token,并以该token为key,1为value作为输出。hadoop收集所有的map输出,并通过shuffle过程,归并所有相同的key。reduce过程的数据即为归并的结果,key为token,value为map中该token对应的所有value的集合。reduce方法简单计算value集合的大小,输出结果。key为token,value为数量。最后hadoop使用默认TextOutputFormat输出结果。

vast    1
version 3
very    4
via     36
view    4
viewed  1
views   1
virtual 1
void    8
walk    1
watch   1
wave    1
way     2
we      5
what    1
when    6
where   7

 

分享到:
评论

相关推荐

    Hadoop Succinctly

    Getting Started with Hadoop HDFS—The Hadoop Distributed File System YARN—Yet Another Resource Negotiator Hadoop Streaming Inside the Cluster Hadoop Distributions The Hadoop Ecosystem

    Getting Started with Google Guava

    《Getting Started with Google Guava》是Bill Bejeck所著,旨在帮助Java开发者通过Google Guava库编写更优质、更高效的代码。Bill Bejeck是一位拥有10年经验的资深软件工程师,专注于各种项目的开发工作。在写作...

    Getting Started with Storm-带书签目录超清文字版.pdf

    《Getting Started with Storm》这本书是入门Apache Storm的绝佳资源,它深入浅出地介绍了这个分布式实时计算系统的原理、架构以及实际应用。Apache Storm是一个开源的流处理系统,它能够处理无限的数据流,并确保每...

    storm学习入门《Getting started with Storm》中英文版

    "storm学习入门《Getting started with Storm》中英文版" 指的是一个关于Apache Storm的初学者教程资源,包含了该技术的入门介绍。Apache Storm是一个开源的分布式实时计算系统,用于处理流数据,即持续不断的数据流...

    Getting Started with Impala 电子书

    总的来说,《Getting Started with Impala》这本书是学习Impala和Hadoop大数据分析的宝贵资源。它不仅介绍了技术基础知识,还提供了丰富的实践指导,无论你是数据工程师、数据分析师还是对大数据感兴趣的个人,都能...

    spring-hadoop-getting-started:Spring for Apache Hadoop 入门示例

    《Spring for Apache Hadoop 入门指南》 Apache Hadoop 是一个开源...在实际项目中,结合"spring-hadoop-getting-started-master"这个示例项目,你可以深入学习并实践Spring Hadoop的使用,从而更好地驾驭Hadoop生态。

    Getting Started with Impala

    文档中提到的“Getting Up and Running with Impala”部分,很可能是指导用户如何开始使用Impala的入门指南。具体步骤可能包括安装Impala的过程,以及如何连接到Impala服务进行查询。安装Impala通常涉及下载合适版本...

    Getting Started with Hive for Relational Database Developers

    `2-hive-relational-database-developers-getting-started-m2-slides.pdf`和`4-hive-relational-database-developers-getting-started-m4-slides.pdf`是关于Hive的教程幻灯片,它们涵盖了从基础到高级的主题,包括...

    [APACHE]Apache Crunch - Getting Started.pdf

    文档《Getting Started》将引导读者通过创建一个简单的Crunch管道来统计文本文件中单词的数量这一分布式计算的"Hello World"过程。在创建这个管道的过程中,会解释Crunch的核心概念以及如何使用这些概念来创建有效且...

    getting started with goole guava

    《Getting Started with Google Guava》是Bill Bejeck撰写的一本关于使用Google Guava库来提高Java编码效率和质量的入门书籍。Bill Bejeck是一位拥有十年软件工程经验的资深软件工程师,他的工作涵盖了广泛项目。他...

    Hadoop.chm

    hadoop api Getting Started MapReduce HDFS Common

    Getting Started with Kudu Perform Fast Analytics on Fast Data

    本书《Getting Started with Kudu》由Jean-Marc Spaggiari、Mladen Kovacevic、Brock Noland 和 Ryan Bosshart 合著,是目前市场上关于Kudu的第一本专著。 #### 二、Kudu的特点与应用场景 ##### 特点: 1. **高...

    Getting Started with JReport

    5. **HIVE连接**:连接到Apache Hadoop的分布式数据仓库Hive。 6. **层次数据源**:处理具有层级结构的数据。 7. **自定义数据源**:用户可以定义自己的数据源接口来扩展JReport的功能。 ### 构建业务视图 为了在...

    Elasticsearch for Hadoop

    2. Getting Started with ES-Hadoop Understanding the WordCount program Understanding Mapper Understanding the reducer Understanding the driver Using the old API – org.apache.hadoop.mapred Going ...

    hadoop for dummies

    在“Getting Started With Hadoop”部分,书中详细介绍了Hadoop的起源,解释了大数据的增长趋势,并提供了实际案例来帮助读者理解Hadoop在现实世界中的应用。这部分还将引导读者了解Hadoop生态系统,特别是Hadoop 2...

Global site tag (gtag.js) - Google Analytics