1. 程式人生 > >如何使用eclipse開發hadoop程式

如何使用eclipse開發hadoop程式

說明:

環境說明:伺服器端:虛擬機器下安裝centos6.8, jdk1.7, hadoop2.7.5

客戶端:win10,jdk1.7,hadoop2.7.5,eclipseMars.2 Release (4.5.2)                  

一、安裝並配置相關軟體

1、下載windows下使用的eclipse 外掛hadoop-eclipse-plugin-2.7.2.jar,以及winutils.exe和hadoop.dll。

2、將hadoop解壓到某目錄,如筆者D:\centos-hadoop-2.7.5。名稱前加上centos是因該版本是筆者在centos下自行編譯生成的。

 3、把hadoop.dll和winutile.exe放到D:\centos-hadoop-2.7.5目錄下的bin

 4、配置環境變數:

(1)新增變數名:HADOOP_HOME,變數值為hadoop解壓後的路徑D:\centos-hadoop-2.7.5。

(2)新增變數名:JAVA_HOME,變數值為jdk安裝路徑C:\Java\jdk1.7.0_75。

(3)變數path屬性值裡新增:%HADOOP_HOME%\bin;%JAVA_HOME%\bin

5、把hadoop-eclipse-plugin-2.7.3.jar包放到eclipse安裝路徑的plugins的資料夾裡,並重啟eclipse

6、執行eclipse,開啟選單Window->ShowView->Other,顯示如       

 

在Map/Reduce Locations中新建一個Hadoop Location。在這個View中,右鍵-->New Hadoop Location。在彈出的對話方塊中需要配置Locationname,還有Map/Reduce Master和DFS Master。

Map/Reduce(V2)Master
Host:為Map/Reduce主節點址(任務追蹤器),這裡筆者設為所安裝的hadoop叢集中的master節點的IP地址。
Port:為屬性mapreduce.jobtracker.http.address所配置的埠號。此屬性一般採用系統mapred-default.xml配置檔案中的值“0.0.0.0:50030”,則埠為50030。

(注:筆者曾用50020、8030等其它埠號,程式也能正常執行。網上也有人認為應為hdfs-site.xml中dfs.datanode.ipc.address指定的的埠號50020,到現不知其原因,請指點)

DFS Master

Host:為分散式系統名稱節點namenode主機IP。

Port:為core-site.xml中fs.defaultFS指定的埠。筆者機器配置如下,即為9000。

<property>

<name>fs.defaultFS</name>

<value>hdfs://master:9000</value>

</property>

檢視hadoop系統相關配置屬性值,可用瀏覽器訪問http://master:8088並點選Tools --> Configuration 進行查詢。

UserName:hadoop叢集上跑hadoop應用的使用者名稱稱。

8:在瀏覽器裡檢視的那些檔案都能在eclipse的左邊的DFSLocations裡展示出來啦~

到此,環境配置完畢。

二、開發wordcount小程式

1、在eclipse中新建java project。 

2、新增引用hadoop庫檔案。

         庫檔案位於%HADOOP_HOME%\share\hadoop目錄下,根據應用程式的需要新增。

本wordcount程式需要新增的是common、hdfs、yarn目錄下的jar檔案及子目錄lib中的所有jar檔案。 

3、編寫原始碼(本原始碼來自網路,如侵權請告知刪除)

WordcountMapper.java 

package cn.htkc.bigdata.mr.wcdemo; 

import java.io.IOException;

import org.apache.hadoop.io.IntWritable;

import org.apache.hadoop.io.LongWritable;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.mapreduce.Mapper;

public class WordcountMapper extendsMapper<LongWritable, Text, Text, IntWritable>{

         @Override

         protectedvoid map(LongWritable key, Text value, Context context) throws IOException,InterruptedException {

                   Stringline = value.toString();

                   String[]words = line.split(" ");    

                   for(Stringword:words){

                            context.write(newText(word), new IntWritable(1));

                   }

         }       

}

 WordcountReducer.java 

package cn.htkc.bigdata.mr.wcdemo; 

import java.io.IOException;

import org.apache.hadoop.io.IntWritable;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.mapreduce.Reducer; 

public class WordcountReducer extendsReducer<Text, IntWritable, Text, IntWritable>{

          @Override

         protectedvoid reduce(Text key, Iterable<IntWritable> values, Context context)throws IOException, InterruptedException {

                   int count=0;              

                   for(IntWritablevalue:values){                

                            count+= value.get();

                   }                

                   context.write(key,new IntWritable(count));          

         }       

}

 WordcountDriver.java 

package cn.htkc.bigdata.mr.wcdemo; 

importorg.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;

importorg.apache.hadoop.mapreduce.lib.input.FileInputFormat;

importorg.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

public class WordcountDriver {        

         publicstatic void main(String[] args) throws Exception {

                   Configurationconf = new Configuration();

                   Jobjob = Job.getInstance(conf);              

                   job.setJarByClass(WordcountDriver.class);

                   job.setMapperClass(WordcountMapper.class);

                   job.setReducerClass(WordcountReducer.class);            

                   job.setMapOutputKeyClass(Text.class);

                   job.setMapOutputValueClass(IntWritable.class);

                   job.setOutputKeyClass(Text.class);

                   job.setOutputValueClass(IntWritable.class);

                   FileInputFormat.setInputPaths(job,new Path(args[0]));

                   FileOutputFormat.setOutputPath(job,new Path(args[1]));

                   booleanres = job.waitForCompletion(true);

                   System.exit(res?0:1);               

         }

}

三、執行程式

1、  本地執行

編寫完相關程式碼後,配置輸入輸出引數,檔案路徑中的分隔符記得改為“/”。

執行結果顯示:


該程式的資料處理工作、資料的輸入輸出都基於本地進行的。

當然資料的輸入輸出也可放在hdfs系統上,只需要將上圖中”program arguments”的引數改為hdfs://master:9000/wordcount/input/ hdfs://master:9000/wordcount/output/則可以了。

 2、  遠端伺服器執行

2.1 將應用程式打包生成jar檔案,並上傳到centos伺服器上。執行:

[[email protected]~]$ hadoop jar wordcount.jar cn.htkc.bigdata.mr.wcdemo.WordcountDriver/wordcount/input /wordcount/output 

程式將正常執行並輸出結果

相關推薦

如何使用eclipse開發hadoop程式

說明: 環境說明:伺服器端:虛擬機器下安裝centos6.8, jdk1.7, hadoop2.7.5 客戶端:win10,jdk1.7,hadoop2.7.5,eclipseMars.2 Release (4.5.2)                   一、安裝並配置相

windows上eclipse執行hadoop程式報NullPointerException錯

windows上eclipse執行hadoop程式報NullPointerException錯 log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFact

使用Eclipse開發Python程式(1)

對於有Java、Android或C/C++基礎的小夥伴們該對Eclipse十分熟悉了,這是一個開放原始碼的軟體開發專案,是一個開放原始碼的、基於Java的可擴充套件開發平臺。就其本身而言,Eclipse只是一個框架和一組服務,能夠通過外掛和元件來構建開發環境。 1.2.1  Ecl

Eclipse開發Android程式如何在手機上執行

android開發不論是在真機上除錯還是最終釋出到真機上都非常簡單,過程如下:1、安裝usb驅動  官方教程概述:  不同的Android手機有對應不同的驅動,對於Nexus One, and Nexus S,見官方教程“Downloading the Goolge USB Driver”部分,直接用Andr

Windows下開發Hadoop程式遇到的坑及解決方案

背景 過幾天工作需要用到Hadoop,於是就弄了本PDF看。看了半天也是暈暈乎乎的。乾脆直接動手,這樣還能掌握的快一點。於是我就在本地要搭建一個Hadoop的開發環境。 環境前提 1、Hadoop部署在測試伺服器上。 2、開發人員在Windows上使用eclipse進行

windows下eclipse開發hadoop連線虛擬機器linux配置的問題

linux中對應的hdfs和mapreduce埠已經配好 但是當eclipse中的hadoop外掛安裝並配置好後,卻無法連線 右下角狀態列一直顯示connecting to dfs... 後來終於知道原因,原來是linux防火牆的問題, 需要將linux下對應的埠

在windows環境中開發hadoop程式

在工作中,我們常常需要在Windows環境中開發Hadoop程式,比如使用eclipse開發MapReduce的程式等。為了方便程式的執行差錯,除了程式中需要新增Hadoop的相關jar包外,還需要配置windows的本地環境。 將Hadoop解壓到Windows目錄下:D

基於Maven使用eclipse開發mapreduce 程式

1.安裝mvn(可以省略)1.1上傳安裝包到linux1.2解壓maven安裝包 mkdir /usr/maven tar -zxvf apache-maven-3.2.1-bin.tar.gz -C /usr/maven1.3新增maven到環境變數 vim /et

很詳細的在linux下使用Eclipse 開發hadoop配置

在前面一篇文章中介紹瞭如果在完全分散式的環境下搭建Hadoop0.20.2,現在就再利用這個環境完成開發。       首先用hadoop這個使用者登入linux系統(hadoop使用者在前面一篇文章中建立的),然後下載eclipse的tar.gz包到/home/hadoo

Eclipse開發andriod程式時import android.support.v4提示匯入錯誤解決辦法

在使用Eclipse開發andriod程式時,程式中提示import Android.support.v4.XXX或者import android.support.v7.XXX出錯,具體的提示資訊是: The impo

RHEL7.2 安裝Eclipse-oxygen Hadoop開發環境

pwd nal nom distrib gen lease rhel7 ons rwx 1 Eclipse-oxygen下載地址 http://www.eclipse.org/downloads/download.php?file=/technology/epp/down

Hadoop Eclipse開發環境搭建

spa 如果 eclipse配置 system ima println smo cto icop 一、安裝Eclipse 下載Eclipse,解壓安裝,例如安裝到/usr/local,即/usr/local/eclipse 4.3.1版

eclipse執行mapereduce程式時報如下錯誤:org.apache.hadoop.io.nativeio.NativeIO$Windows.createDirectoryWithMode0(

eclipse執行mapereduce程式時報如下錯誤: log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory). log4j:WARN

Java開發HBase程式報錯:HADOOP_HOME or hadoop.home.dir are not set.

Java開發HBase程式報錯:HADOOP_HOME or hadoop.home.dir are not set. 1.報錯 16:36:44.271 [main] DEBUG org.apache.hadoop.util.Shell - Failed to detect a

並行作業3:在eclipse開發MapReduce程式

在eclipse中開發MapReduce程式 系統採用vm下ubuntu16.04 一、eclipse安裝(參考我的其它部落格) 二、eclipse配置 1、下載hadoop-eclipse-plugin-2.7.3.jar外掛,並將其拖到虛擬機器桌面 2、將其移動到/u

在windows下搭建hadoop+eclipse開發環境

        1.去官網下載hadoop-eclipse-plugin-2.7.3.jar(與你Hadoop版本一致)   2.把jar包匯入在eclipse安裝路徑的plugins中  

win10配置eclipse開發環境及執行hadoop例項及叢集執行

一,三,四都參考: https://www.cnblogs.com/supiaopiao/p/7240308.html https://blog.csdn.net/u010185220/article/details/79095179/ https://blog.cs

學習筆記:從0開始學習大資料-4.Eclipse配置hadoop開發環境

Eclipse配置hadoop開發環境 1. 下載   hadoop-eclipse-plugin-2.6.0.jar https://github.com/winghc/hadoop2x-eclipse-plugin/tree/v2.6.0 2. 複

Windows下Eclipse關聯Hadoop開發

前言:     當hadoop的環境搭建好之後,我們就開始開發相關功能     工具呢,還是使用eclipse     筆者直接使用window下的eclipse來關聯hadoop進行開發,這時就需要單獨配置一些東西 準備:     * STS(也就是spr

ubuntu 16.04 下配置 hadoop + eclipse 開發環境

注:筆記有參考這篇文章,但實際還是碰到了不少坑,所以做了一些整理;程式來源於這篇文章,稍做了修改。 一、安裝 JDK 1.8 我安裝的是oracleJDK 1.8 1.先將含有相關包的清單匯入。 $ sudo add-apt-repository ppa:web