如何使用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