程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> windows 32位eclipse長途hadoop開辟情況搭建

windows 32位eclipse長途hadoop開辟情況搭建

編輯:關於JAVA

windows 32位eclipse長途hadoop開辟情況搭建。本站提示廣大學習愛好者:(windows 32位eclipse長途hadoop開辟情況搭建)文章只能為提供參考,不一定能成為您想要的結果。以下是windows 32位eclipse長途hadoop開辟情況搭建正文


本文假定hadoop情況在長途機械(如linux辦事器上),hadoop版本為2.5.2

注:本文eclipse/intellij idea 長途調試hadoop 2.6.0重要參考了並在其基本上有所調劑

因為我愛好在win7 64位上裝置32位的軟件,好比32位jdk,32位eclipse,所以固然本文中的操作體系是win7 64位,然則一切的軟件都是32位的。

軟件版本:

操作體系:win7 64位

eclipse: eclipse-jee-mars-2-win32

java: 1.8.0_77 32位

hadoop:2.5.2

1、裝置hadoop

1、在win7中隨意找一個目次解壓hadoop-2.5.2.tar.gz,好比D:\app\hadoop-2.5.2\

2、設置裝備擺設情況變量

HADOOP_HOME = D:\app\hadoop-2.5.2\

2、裝置hadoop eclipse插件

1、下載hadoop-eclipse-plugin

hadoop-eclipse-plugin是一個專門用於eclipse的hadoop插件,可以直接在IDE情況中檢查hdfs的目次和文件內容。其源代碼托管於github上,官網地址是https://github.com/winghc/hadoop2x-eclipse-plugin  下載release文件夾中的hadoop-eclipse-plugin-2.6.0.jar便可

2、下載windows 32位平台的hadoop插件包(hadoop.dll,winutils.exe)

因為我們的軟件情況是32位的,所以須要下載32位的hadoop.dll和winutils.exe,下載地址年夜家可以百度 hadoop.dll 32

好比下載這個:http://xiazai.jb51.net/201607/yuanma/eclipse-hadoop(jb51.net).rar

將winutils.exe復制到$HADOOP_HOME\bin目次,將hadoop.dll復制到C:\Windows\SysWOW64目次下(注:因為我們的操作體系是64位,而軟件是32位,所以我們是拷到這個目次下,別的,假如你的操作體系就是32位,那末就直接拷到c:\windwos\system32目次下)

3、設置裝備擺設hadoop-eclipse-plugin插件

啟動eclipse,window->preferences->hadoop map/reduce 指定win7上的hadoop根目次(即:$HADOOP_HOME)

切換Map/reduce視圖

windows->show view->other     Map/Reduce Locations

然後鄙人面的Map/Reduce Locations 面板中添加新的Location

依照以下設置裝備擺設

Location name 這裡就是起個名字,隨意起

Map/Reduce(V2) Master Host 這裡就是虛擬機裡hadoop master對應的IP地址,上面的端口對應 hdfs-site.xml裡dfs.datanode.ipc.address屬性所指定的端口

DFS Master Port這裡的端口,對應core-site.xml裡fs.defaultFS所指定的端口

最初的user name要跟虛擬機裡運轉hadoop的用戶名分歧,我是用hadoop身份裝置運轉hadoop 2.6.0的,所以這裡填寫hadoop,假如你是用root裝置的,響應的改成root

這些參數指定好今後,點擊Finish,eclipse就曉得若何去銜接hadoop了,一切順遂的話,在Project Explorer面板中,就可以看到hdfs裡的目次和文件了

可以在文件上右擊,選擇刪除試下,平日第一次是不勝利的,會提醒一堆器械,年夜意是權限缺乏之類,緣由是以後的win7登錄用戶不是虛擬機裡hadoop的運轉用戶,處理方法有許多,好比你可以在win7上新建一個hadoop的治理員用戶,然後切換成hadoop登錄win7,再應用eclipse開辟,然則如許太煩,最簡略的方法:

hdfs-site.xml裡添加

 <property>
 <name>dfs.permissions.enabled</name>
 <value>false</value>
 </property>

總而言之,就是完全把hadoop的平安檢測關失落(進修階段不須要這些,正式臨盆上時,不要這麼干),最初重啟hadoop,再到eclipse裡,反復適才的刪除文件操作試下,應當可以了。

注:假如沒法銜接,請先測驗考試telnet 192.168.1.6 9000 (請將ip和端口換成本身的hadoop server ip和端口)確保端口可以拜訪。

假如telnet不勝利,能夠是core-site.xml裡fs.defaultFS的值有成績,好比設置裝備擺設的是localhost:9000,可以斟酌把localhost換成主機名

3、編寫wordcount示例

1、新建一個項目,選擇Map/Reduce Project

前面的Next就好了,然後新建一個類WodCount.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> {

 private final static IntWritable one = new IntWritable(1);
 private Text word = new Text();

 public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
  StringTokenizer itr = new StringTokenizer(value.toString());
  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(); 
 String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
 if (otherArgs.length < 2) {
  System.err.println("Usage: wordcount <in> [<in>...] <out>");
  System.exit(2);
 }
 Job job = Job.getInstance(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);
 for (int i = 0; i < otherArgs.length - 1; ++i) {
  FileInputFormat.addInputPath(job, new Path(otherArgs[i]));
 }
 FileOutputFormat.setOutputPath(job,
  new Path(otherArgs[otherArgs.length - 1]));
 System.exit(job.waitForCompletion(true) ? 0 : 1);
 }
}


然後再src目次下創立一個log4j.properties,內容以下:(為了便利運轉起來後,檢查各類輸入)

log4j.rootLogger=INFO, stdout

#log4j.logger.org.springframework=INFO
#log4j.logger.org.apache.activemq=INFO
#log4j.logger.org.apache.activemq.spring=WARN
#log4j.logger.org.apache.activemq.store.journal=INFO
#log4j.logger.org.activeio.journal=INFO

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} | %-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %m%n

終究目次構造以下:

2、設置裝備擺設運轉參數

由於WordCount是輸出一個文件用於統計單詞字,然後輸入到另外一個文件夾下,所以給二個參數,參考上圖,在Program arguments裡,輸出

hdfs://192.168.1.6:9000/user/nub1.txt
hdfs://192.168.1.6:9000/user/output

留意的是,假如user/nub1.txt文件沒有,請先手動上傳(應用eclipse中DFS Location對象的右鍵),然後/output/ 必需是不存在的,不然法式運轉到最初,發明目的目次存在,也會報錯。

好了,運轉便可

以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved