使用Maven搭建Hadoop开发环境

关于Maven的使用就不再啰嗦了,网上很多,并且这么多年变化也不大,这里仅介绍怎么搭建Hadoop的开发环境。

1. 首先创建工程

代码如下:

mvn archetype:generate -DgroupId=my.hadoopstudy -DartifactId=hadoopstudy -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

2. 然后在pom.xml文件里添加hadoop的依赖包hadoop-common, hadoop-client, hadoop-hdfs,添加后的pom.xml文件如下

<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>my.hadoopstudy</groupId>
 <artifactId>hadoopstudy</artifactId>
 <packaging>jar</packaging>
 <version>1.0-SNAPSHOT</version>
 <name>hadoopstudy</name>
 <url>http://maven.apache.org</url>

 <dependencies>
 <dependency>
  <groupId>org.apache.hadoop</groupId>
  <artifactId>hadoop-common</artifactId>
  <version>2.5.1</version>
 </dependency>
 <dependency>
  <groupId>org.apache.hadoop</groupId>
  <artifactId>hadoop-hdfs</artifactId>
  <version>2.5.1</version>
 </dependency>
 <dependency>
  <groupId>org.apache.hadoop</groupId>
  <artifactId>hadoop-client</artifactId>
  <version>2.5.1</version>
 </dependency>

 <dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>3.8.1</version>
  <scope>test</scope>
 </dependency>
 </dependencies>
</project>

3. 测试

3.1 首先我们可以测试一下hdfs的开发,这里假定使用上一篇Hadoop文章中的hadoop集群,类代码如下

package my.hadoopstudy.dfs;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;

import java.io.InputStream;
import java.net.URI;

public class Test {
 public static void main(String[] args) throws Exception {
 String uri = "hdfs://9.111.254.189:9000/";
 Configuration config = new Configuration();
 FileSystem fs = FileSystem.get(URI.create(uri), config);

 // 列出hdfs上/user/fkong/目录下的所有文件和目录
 FileStatus[] statuses = fs.listStatus(new Path("/user/fkong"));
 for (FileStatus status : statuses) {
  System.out.println(status);
 }

 // 在hdfs的/user/fkong目录下创建一个文件,并写入一行文本
 FSDataOutputStream os = fs.create(new Path("/user/fkong/test.log"));
 os.write("Hello World!".getBytes());
 os.flush();
 os.close();

 // 显示在hdfs的/user/fkong下指定文件的内容
 InputStream is = fs.open(new Path("/user/fkong/test.log"));
 IOUtils.copyBytes(is, System.out, 1024, true);
 }
}

3.2 测试MapReduce作业

测试代码比较简单,如下:

package my.hadoopstudy.mapreduce;

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;
import org.apache.hadoop.util.GenericOptionsParser;

import java.io.IOException;

public class EventCount {

 public static class MyMapper extends Mapper<Object, Text, Text, IntWritable>{
 private final static IntWritable one = new IntWritable(1);
 private Text event = new Text();

 public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
  int idx = value.toString().indexOf(" ");
  if (idx > 0) {
  String e = value.toString().substring(0, idx);
  event.set(e);
  context.write(event, one);
  }
 }
 }

 public static class MyReducer 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();
 String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
 if (otherArgs.length < 2) {
  System.err.println("Usage: EventCount <in> <out>");
  System.exit(2);
 }
 Job job = Job.getInstance(conf, "event count");
 job.setJarByClass(EventCount.class);
 job.setMapperClass(MyMapper.class);
 job.setCombinerClass(MyReducer.class);
 job.setReducerClass(MyReducer.class);
 job.setOutputKeyClass(Text.class);
 job.setOutputValueClass(IntWritable.class);
 FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
 FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
 System.exit(job.waitForCompletion(true) ? 0 : 1);
 }
}

运行“mvn package”命令产生jar包hadoopstudy-1.0-SNAPSHOT.jar,并将jar文件复制到hadoop安装目录下

这里假定我们需要分析几个日志文件中的Event信息来统计各种Event个数,所以创建一下目录和文件

/tmp/input/event.log.1
/tmp/input/event.log.2
/tmp/input/event.log.3

因为这里只是要做一个列子,所以每个文件内容可以都一样,假如内容如下

JOB_NEW ...
JOB_NEW ...
JOB_FINISH ...
JOB_NEW ...
JOB_FINISH ...

然后把这些文件复制到HDFS上

代码如下:

$ bin/hdfs dfs -put /tmp/input /user/fkong/input

运行mapreduce作业

代码如下:

$ bin/hadoop jar hadoopstudy-1.0-SNAPSHOT.jar my.hadoopstudy.mapreduce.EventCount /user/fkong/input /user/fkong/output

查看执行结果

代码如下:

$ bin/hdfs dfs -cat /user/fkong/output/part-r-00000

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java 配置MyEclipse Maven环境具体实现步骤

     java 配置MyEclipse Maven环境 虽然我的大部分项目已经迁到Idea上去了,但是在写部分小的测试程序的时候还是习惯性的会点开MyEclipse.之前使用第三方库的时候 我会习惯的下载jar包,然后build path导入,但是在idea中貌似通过配置maven依赖更方便,于是我在MyEclipse中也想使用pom.xml来导入依赖,在尝试的过程中遇到了些问题,我这里是记录解决这些问题的方法. 环境 Myeclipse for spring  2014 JRE 8 Maven 3

  • window下安装和配置maven环境

    本文实例为大家分享了安装和配置maven环境的具体步骤,供大家参考,具体内容如下 下载maven: 1.进入官网下载:http://maven.apache.org/download.cgi 注意事项:(截至目前2015年12月1日)最新版本的Maven3.3.9必须在JDK1.7版本以上运行. 2.下载后复制到我们自己心仪的目录解压即可. 配置maven的环境变量: 1.计算机-鼠标右键选择属性-高级系统设置-环境变量,然后新建一个变量名为M2_HOME,变量值为maven安装目录,确定保存.

  • JavaEE开发基于Eclipse的环境搭建以及Maven Web App的创建

    本篇博客就完整的来聊一下如何在Eclipse中创建的Maven Project.本篇博客是JavaEE开发的开篇,也是基础.本篇博客的内容干货还是比较多的,而且比较实用,并且都是采用目前最新版本的工具来配置的环境.下方内容主要包括了JDK1.8的安装.JavaEE版本的Eclipse的安装.Maven的安装.Tomcat 9.0的配置.Eclipse上的M2Eclipse插件以及STS插件的安装.当然本篇博客是在Mac OS X下完成的.当然本篇所涉及的工具都有Windows版的,而且Eclip

  • Java随手笔记8之包、环境变量和访问控制及maven profile实现多环境打包

    一.java中的包 Java利用包来组织代码,一来使大型项目的代码结构清晰,二来包是一个命名空间的划分,即不同包中可以有相同名字的类,只需在在类名前加上包名即可区分它们. Package xxx 必须位于java文件除了注释以外的第一行,用来指明当前文件中的类属于哪一个包,如果没有package语句,则该文件中的类都属于默认包. Import xxx用来在当前java文件中导入不属于当前包中的类,从而可以在当前文件中使用它们. 二.java中的环境变量 1.path 环境变量其实就是一组变量(废

  • 使用maven+eclipse搭建struts2开发环境

    一.web分层结构简介1.web[细]粒度分层结构: 按细粒度分层可以分为以下6种: 1).表现层:html/css/js/jsp 2).控制层:servlet 3).实体层:javabean 4).业务逻辑层:javabean 5).持久层:jdbc/c3p0/dbutils 6).数据层:mysql/oracle 2.web[粗]粒度分层结构(重点): 按粗粒度可以分为3层: 1).由上面的1).2).3)组成mvc 什么是MVC? m即为model(模型层),v为view(表现层),c为c

  • java selenium教程环境搭建基于Maven

    现在Java的大部分项目都是基于Maven,  在Maven项目中使用Selenium2. 非常简单. 首先你需要配置好Maven的环境 可以参考Maven安装以及eclipse配置maven的方法: http://www.jb51.net/softjc/416034.html 官方的文档 http://docs.seleniumhq.org/download/maven.jsp 新建一个Maven的Project 添加如下到你的POM.XML, 就可以了 <dependency> <g

  • Maven2环境安装与准备工作详解

    Maven2环境安装与准备,供大家参考,具体内容如下 1.在Ubuntu11.04上安装Maven2 安装JDK,sudo apt-get install openjdk-6-jdk 安装Maven2,sudo apt-get install maven2 上面是使用apt安装,当然也可以下载到机器上文件安装,注意配置环境变量. 检测是否安装好了,可以使用mvn -v查看,结果如下时就可以了: 可以通过whereis命令查看maven2的配置信息位置和HOME位置,如下所示 2.使用Nexus创

  • 使用Maven搭建Hadoop开发环境

    关于Maven的使用就不再啰嗦了,网上很多,并且这么多年变化也不大,这里仅介绍怎么搭建Hadoop的开发环境. 1. 首先创建工程 复制代码 代码如下: mvn archetype:generate -DgroupId=my.hadoopstudy -DartifactId=hadoopstudy -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false 2. 然后在pom.xml文件里添加hadoop的依赖

  • Windows下使用IDEA搭建Hadoop开发环境的详细方法

    笔者鼓弄了两个星期,终于把所有有关hadoop的环境配置好了,一是虚拟机上的 完全分布式集群 ,但是为了平时写代码的方便,则在windows上也配置了hadoop的 伪分布式集群 ,同时在IDEA上就可以编写代码,同时在windows环境下进行运行.(如果不配置windows下的伪分布式集群,则在IDEA上编写的代码无法在windows平台下运行).笔者在网络上找了很多有关windows下使用idea搭建hadoop开发环境的中文教程都不太全,最后使用国外的英文教程配置成功,因此这里整理一下,方

  • 使用IDEA搭建Hadoop开发环境的操作步骤(Window10为例)

    下载安装Hadoop 下载安装包 进入官网下载下载hadoop的安装包(二进制文件)http://hadoop.apache.org/releases.html 我们这里下载2.10.1版本的,如果想下载更高版本的请先去maven仓库查看是否有对应版本 解压文件 下载好的.gz文件可以直接解压. winRAR和Bandizip都可以用来解压,但是注意必须以管理员身份打开解压软件,否则会出现解压错误 配置环境变量 配置JAVA_HOME和HADOOP_HOME 我们在环境变量处分别设置JAVA_H

  • IDEA快速搭建Java开发环境的教程图解

    作为IntelliJ IDEA mac新手,IDEA如何快速搭建Java开发环境呢? 今天小编就给大家带来了IntelliJ IDEA mac使用教程,想知道IDEA如何快速搭建Java开发环境?那就一起来看看吧! 全局JDK(默认配置) 具体步骤:顶部工具栏 File ->Other Settins -> Default Project Structure -> SDKs -> JDK 示例: 根据下图步骤设置JDK目录,最后点击OK保存. 注:SDKs全称是Software D

  • VSCode+Gradle搭建Java开发环境实现

    前言 其实目前已经有许多优秀的IDE都是支持JAVA开发的,比如Eclipse.NetBeans.IntelliJ IDEA.Android Studio等,如果是项目级的开发,并且对这些IDE也已经十分满意的话,可以不用再来折腾VSCode(Visual Studio Code).我本人主要是基于以下原因选择折腾一番: 确实是喜欢VSCode这款工具,开源免费,UI美观,性能强悍. 插件丰富,并且通过对各种插件的安装,也能对程序运行过程和原理有进一步了解,达到 "知其所以然" 的目的

  • 搭建MyBatis开发环境及基本的CURD介绍

    一.MyBatis概述 首先就是之前Java web中的三层结构 界面层: 和用户打交道的, 接收用户的请求参数, 显示处理结果的.(jsp ,html ,servlet) 业务逻辑层: 接收了界面层传递的数据,计算逻辑,调用数据库,获取数据 数据访问层: 就是访问数据库, 执行对数据的查询,修改,删除等等的 三层中对应的包: 界面层: controller包 (servlet) 业务逻辑层: service 包(XXXService类) 数据访问层: dao包(XXXDao类) 三层中类的交互

  • IntelliJ IDEA基于SpringBoot如何搭建SSM开发环境的步骤详解

    之前给大家在博文中讲过如何通过eclipse快速搭建SSM开发环境,但相对而言还是有些麻烦的,今天玄武老师给大家介绍下如何使用IntelliJ IDEA基于SpringBoot来更快速地搭建SSM开发环境,相比于传统搭建方式,极少的配置文件和配置信息会让你彻底爱上它. 环境搭建步骤详解 第1步:创建Spring Initializr项目 在IntelliJ IDEA中新建项目,选择Spring Initializr,JDK版本选择自己安装的版本(首次使用可能显示没有,那么就点击New去按照步骤创

  • Eclipse+ADT+Android SDK搭建安卓开发环境的实现步骤

    目录 运行环境 下载地址 环境下载 安装JDK 安装Eclipse 下载独立的Android SDK工具 ADT安卓开发工具安装 eclipse离线安装ADT插件 配置ADT插件 通过Android SDK Manage添加新的软件包 AVD Manage创建安卓虚拟机 运行环境 windows 7 下载地址 环境下载 最近开接触Android(安卓)嵌入式开发,首要问题是搭建Andoid开发环境,由于本人用的是windows7的笔记本,也就只能到Windows中搭建Android 开发环境了!

  • 一步步教你搭建Scala开发环境(非常详细!)

    目录 一.Scala开发环境搭建 1.1.安装scala 1.2.scala插件安装 1.2.1.在线安装 1.2.2.离线安装 1.3.Scala快速入门 1.创建一个maven项目 2.引入scala框架 3.创建项目的源文件目录 4.在scala下新建一个包 5.编写代码 1.4.关联scala源码 1.5.Scala API 总结 一.Scala开发环境搭建 1.1.安装scala 1.首先确保jdk是否安装成功 如果还未安装jdk,请猛戳这里–>JDK安装教程 2.下载对应的scala

  • 详解ubuntu搭建Java开发环境

    没有用Java写过程序,做为一个Java新手,在写第一个Hello,world程序之前,先在Ubuntu中搭建Java开发环境. 本文结构: 一.JDK安装 二.MyEclipse安装 三.Hello World测试 一.JDK安装 好吧,我选择JDK1.6,是不是有点out了? 1.下载JDK1.6,你可以到官网去下载,下载时请看清自己的系统版本,记得一定要下载相应的版本. 2.将下载的文件放置到/usr/lib/java目录下(需要手动创建java目录),并修改文件的可执行权限,如chmod

随机推荐