最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Eclipse+Maven構(gòu)建Hadoop項目的方法步驟

 更新時間:2019年02月13日 11:41:25   作者:Eric Chan  
這篇文章主要介紹了Eclipse+Maven構(gòu)建Hadoop項目的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

Maven 翻譯為”專家”、”內(nèi)行”,是 Apache 下的一個純 Java 開發(fā)的開源項目。基于項目對象模型(Project Object Model 縮寫:POM)概念,Maven利用一個中央信息片斷能管理一個項目的構(gòu)建、報告和文檔等步驟。Maven 是一個項目管理工具,可以對 Java 項目進(jìn)行構(gòu)建、依賴管理。

在開發(fā)一些大型項目的時候,需要用到各種各樣的開源包jar,為了方便管理及加載jar,使用maven開發(fā)項目可以節(jié)省大量時間且方便項目移動至新的開發(fā)環(huán)境。

開發(fā)環(huán)境

  • 系統(tǒng):MacOS 10.14.1
  • Hadoop:2.7.0
  • Java:1.8.0
  • Eclipse:4.6.2
  • Maven: 3.3.9

Maven安裝

我使用的這個版本的Eclipse已經(jīng)自帶了Maven插件,不需要在自行安裝,因此我也沒有實際操作,本文就不介紹如何配置。

至于怎么知道自己使用的Eclipse是否自帶有Maven,可以在Eclipse->Preference->Maven->Installations查看是否有Maven及版本號?;蛘咧苯有陆椖坎榭词欠裼蠱aven選項。

 

構(gòu)建Hadoop環(huán)境

創(chuàng)建Maven項目

打開Eclipse,F(xiàn)ile->new->project,選擇Maven,然后下一步next

選擇Creat a simple project,然后下一步next

輸入Group id和artifact id。然后finish。

groupid和artifactId被統(tǒng)稱為“坐標(biāo)”是為了保證項目唯一性而提出的,如果你要把你項目弄到maven本地倉庫去,你想要找到你的項目就必須根據(jù)這兩個id去查找。

groupId一般分為多個段,這里我只說兩段,第一段為域,第二段為公司名稱。域又分為org、com、cn等等許多,其中org為非營利組織,com為商業(yè)組織。舉個apache公司的tomcat項目例子:這個項目的groupId是org.apache,它的域是org(因為tomcat是非營利項目),公司名稱是apache,artigactId是tomcat。

比如我創(chuàng)建一個項目,我一般會將groupId設(shè)置為cn.snowin,cn表示域為中國,snowin是我個人姓名縮寫,artifactId設(shè)置為testProj,表示你這個項目的名稱是testProj,依照這個設(shè)置,你的包結(jié)構(gòu)最后是cn.snowin.testProj打頭。(引自 鏈接 )

完成上述步驟后,就可以在Project Explorer中看到剛剛創(chuàng)建的Maven項目。

 

增加Hadoop依賴

我使用的Hadoop 2.7版本,以下是我的POM配置文件

<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>practice.hadoop</groupId>
	<artifactId>simple-examples</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>
 
	<name>simple-examples</name>
	<url>http://maven.apache.org</url>
 
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>
 
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common -->
		<dependency>
			<groupId>org.apache.hadoop</groupId>
			<artifactId>hadoop-common</artifactId>
			<version>2.7.0</version>
		</dependency>
 
		<dependency>
			<groupId>org.apache.hadoop</groupId>
			<artifactId>hadoop-hdfs</artifactId>
			<version>2.7.0</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client -->
		<dependency>
			<groupId>org.apache.hadoop</groupId>
			<artifactId>hadoop-client</artifactId>
			<version>2.7.0</version>
		</dependency>
 		
 		<dependency>
			<groupId>org.apache.mrunit</groupId>
			<artifactId>mrunit</artifactId>
			<version>1.1.0</version>
			<classifier>hadoop2</classifier>
			<scope>test</scope>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-mapreduce-client-core -->
		<dependency>
			<groupId>org.apache.hadoop</groupId>
			<artifactId>hadoop-mapreduce-client-core</artifactId>
			<version>2.7.0</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-yarn-api -->
		<dependency>
			<groupId>org.apache.hadoop</groupId>
			<artifactId>hadoop-yarn-api</artifactId>
			<version>2.7.0</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-auth -->
		<dependency>
			<groupId>org.apache.hadoop</groupId>
			<artifactId>hadoop-auth</artifactId>
			<version>2.7.0</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-minicluster -->
		<dependency>
			<groupId>org.apache.hadoop</groupId>
			<artifactId>hadoop-minicluster</artifactId>
			<version>2.7.0</version>
			<scope>test</scope>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-mapreduce-client-jobclient -->
		<dependency>
			<groupId>org.apache.hadoop</groupId>
			<artifactId>hadoop-mapreduce-client-jobclient</artifactId>
			<version>2.7.0</version>
			<scope>provided</scope>
		</dependency>
 
	</dependencies>
</project>

在Project Explorer中右鍵該項目,選擇build project,Maven就會根據(jù)POM.xml配置文件下載所需要的jar包。

稍等一段時間后,就可以看到Maven Dependencies中已經(jīng)下載好的jar包。

 

hadoop配置文件

運行 MapReduce 程序前,務(wù)必將 /usr/local/Cellar/hadoop/2.7.0/libexec/etc/hadoop 中將有修改過的配置文件(如偽分布式需要core-site.xml 和 hdfs-site.xml),以及l(fā)og4j.properties復(fù)制到 src/main/resources/

MapReduce實例—WordCount

src/main/java/ 路徑下,創(chuàng)建java文件,代碼如下

import java.io.IOException;
import java.util.StringTokenizer;

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;

public class WordCount {

	public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable> {

		/**
		 * LongWritable, IntWritable, Text 均是 Hadoop 中實現(xiàn)的用于封裝 Java
		 * 數(shù)據(jù)類型的類,這些類實現(xiàn)了WritableComparable接口,
		 * 都能夠被串行化從而便于在分布式環(huán)境中進(jìn)行數(shù)據(jù)交換,你可以將它們分別視為long,int,String 的替代品。
		 */
		private final static IntWritable one = new IntWritable(1); // 值為1
		private Text word = new Text();

		public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
			StringTokenizer itr = new StringTokenizer(value.toString()); // 對字符串進(jìn)行切分
			while (itr.hasMoreTokens()) {
				word.set(itr.nextToken());
				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();
    conf.addResource("classpath:/hadoop/core-site.xml");
    conf.addResource("classpath:/hadoop/hdfs-site.xml");
    conf.addResource("classpath:/hadoop/mapred-site.xml");
//		String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
		String[] otherArgs = {"/input", "/output"};
		if (otherArgs.length != 2) {
			System.err.println("Usage: wordcount <in> <out>");
			System.exit(2);
		}
		Job job = new Job(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.setInputDirRecursive(job, true);
		FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
		FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
		System.exit(job.waitForCompletion(true) ? 0 : 1);
	}

}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:

相關(guān)文章

  • SpringBoot使用Redis的zset統(tǒng)計在線用戶信息

    SpringBoot使用Redis的zset統(tǒng)計在線用戶信息

    這篇文章主要介紹了SpringBoot使用Redis的zset統(tǒng)計在線用戶信息,幫助大家更好的理解和學(xué)習(xí)使用SpringBoot框架,感興趣的朋友可以了解下
    2021-04-04
  • 詳解Java中的增強(qiáng) for 循環(huán) foreach

    詳解Java中的增強(qiáng) for 循環(huán) foreach

    foreach 是 Java 中的一種語法糖,幾乎每一種語言都有一些這樣的語法糖來方便程序員進(jìn)行開發(fā),編譯期間以特定的字節(jié)碼或特定的方式來對這些語法進(jìn)行處理。能夠提高性能,并減少代碼出錯的幾率。
    2017-05-05
  • 詳細(xì)總結(jié)Java基礎(chǔ)類和包裝類

    詳細(xì)總結(jié)Java基礎(chǔ)類和包裝類

    近幾天一直在復(fù)習(xí)Java基礎(chǔ)知識,今天就帶大家總結(jié)一下Java基礎(chǔ)類和包裝類,下文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)Java基礎(chǔ)的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • java使用jna調(diào)用c#中dll的方法詳解

    java使用jna調(diào)用c#中dll的方法詳解

    前一段時間接了個項目,需要用到第三方提供的C#編寫的dll,本身項目是java語言,所以便有了下面這篇文章,本文給大家介紹了關(guān)于java中如何使用jna調(diào)用c#中dll的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-09-09
  • 在java中main函數(shù)如何調(diào)用外部非static方法

    在java中main函數(shù)如何調(diào)用外部非static方法

    這篇文章主要介紹了在java中main函數(shù)如何調(diào)用外部非static方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • SpringBoot異步調(diào)用方法實現(xiàn)場景代碼實例

    SpringBoot異步調(diào)用方法實現(xiàn)場景代碼實例

    這篇文章主要介紹了SpringBoot異步調(diào)用方法實現(xiàn)場景代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • 基于java構(gòu)造方法Vector查找元素源碼分析

    基于java構(gòu)造方法Vector查找元素源碼分析

    本篇文章是關(guān)于ava構(gòu)造方法Vector源碼分析系列文章,本文主要介紹了Vector查找元素的源碼分析,有需要的朋友可以借鑒參考下,希望可以有所幫助
    2021-09-09
  • java中GZIP壓縮解壓類使用實例

    java中GZIP壓縮解壓類使用實例

    這篇文章主要介紹了java中GZIP壓縮解壓類使用實例的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • 一學(xué)即會之JDK版本快速切換方法(2024)

    一學(xué)即會之JDK版本快速切換方法(2024)

    這篇文章主要介紹了一學(xué)即會之JDK版本快速切換方法,詳細(xì)給大家講解了如何下載、安裝和配置多個JDK版本,并通過設(shè)置環(huán)境變量和編寫批處理腳本來切換JDK版本,需要的朋友可以參考下
    2025-03-03
  • Java 反射之私有字段和方法詳細(xì)介紹

    Java 反射之私有字段和方法詳細(xì)介紹

    本文將介紹Java 反射之私有字段和方法的應(yīng)用,需呀了解的朋友可以參考下
    2012-11-11

最新評論

本溪市| 禄劝| 石泉县| 武胜县| 永顺县| 永仁县| 永寿县| 平安县| 沁源县| 那坡县| 景泰县| 湘潭县| 工布江达县| 嘉荫县| 榆社县| 宜兰市| 耒阳市| 穆棱市| 彭水| 高安市| 巢湖市| 九台市| 山丹县| 黎川县| 栖霞市| 满城县| 射阳县| 陇南市| 和政县| 邹平县| 潞城市| 拉萨市| 十堰市| 民丰县| 天柱县| 喜德县| 岱山县| 固阳县| 高安市| 平昌县| 西贡区|