熱線電話:13121318867

登錄
首頁精彩閱讀 Hadoop 在Windows7操作系統下使用Eclipse來搭建hadoop開發環境
Hadoop 在Windows7操作系統下使用Eclipse來搭建hadoop開發環境
2015-01-05
收藏

 Hadoop 在Windows7操作系統下使用Eclipse來搭建hadoop開發環境


網上有一些都是在Linux下使用安裝Eclipse來進行hadoop應用開發,但是大部分Java程序員對linux系統不是那么熟悉,所以需要在windows下開發hadoop程序,所以經過試驗,總結了下如何在windows下使用Eclipse來開發hadoop程序代碼。

 

1、 需要下載hadoop的專門插件jar包

hadoop版本為2.3.0,hadoop集群搭建在centos6x上面,插件包下載地址為:http://download.csdn.net/detail/mchdba/8267181,jar包名字為hadoop-eclipse-plugin-2.3.0,可以適用于hadoop2x系列軟件版本。


2、 把插件包放到eclipse/plugins目錄下

為了以后方便,我這里把盡可能多的jar包都放進來了,如下圖所示:


  

 

3、重啟eclipse,配置Hadoop installation directory    

     如果插件安裝成功,打開Windows—Preferences后,在窗口左側會有Hadoop Map/Reduce選項,點擊此選項,在窗口右側設置Hadoop安裝路徑。

 


 

 

4、配置Map/Reduce Locations

     打開Windows-->Open Perspective-->Other

 

 

 

選擇Map/Reduce,點擊OK,在右下方看到有個Map/Reduce Locations的圖標,如下圖所示:


點擊Map/Reduce Location選項卡,點擊右邊小象圖標,打開Hadoop Location配置窗口:

輸入Location Name,任意名稱即可.配置Map/Reduce Master和DFS Mastrer,Host和Port配置成與core-site.xml的設置一致即可。

去找core-site.xml配置:

<property>                                        <name>fs.default.name</name>                                                                        <value>hdfs://name01:9000</value>                                                                                </property>

在界面配置如下:

 


點擊"Finish"按鈕,關閉窗口。點擊左側的DFSLocations—>myhadoop(上一步配置的location name),如能看到user,表示安裝成功,但是進去看到報錯信息:Error: Permission denied: user=root,access=READ_EXECUTE,inode="/tmp";hadoop:supergroup:drwx---------,如下圖所示:


應該是權限問題:把/tmp/目錄下面所有的關于hadoop的文件夾設置成hadoop用戶所有然后分配授予777權限。

cd /tmp/

chmod 777 /tmp/

chown -R hadoop.hadoop /tmp/hsperfdata_root

之后重新連接打開DFS Locations就顯示正常了。


Map/Reduce Master (此處為Hadoop集群的Map/Reduce地址,應該和mapred-site.xml中的mapred.job.tracker設置相同) 

(1):點擊報錯:

An internal error occurred during: "Connecting to DFS hadoopname01".

java.net.UnknownHostException: name01

直接在hostname那一欄里面設置ip地址為:192.168.52.128,即可,這樣就正常打開了,如下圖所示:


5、新建WordCount項目

    File—>Project,選擇Map/Reduce Project,輸入項目名稱WordCount等。

    在WordCount項目里新建class,名稱為WordCount,報錯代碼如下:Invalid Hadoop Runtime specified; please click 'Configure Hadoop install directory' or fill in library location input field,報錯原因是目錄選擇不對,不能選擇在跟目錄E:\hadoop下,換成E:\u\hadoop\就可以了,如下所示:

 

一路下一步過去,點擊Finished按鈕,完成工程創建,Eclipse控制臺下面出現如下信息:

14-12-9 下午04時03分10秒: Eclipse is running in a JRE, but a JDK is required

  Some Maven plugins may not work when importing projects or updating source folders.

14-12-9 下午04時03分13秒: Refreshing [/WordCount/pom.xml]

14-12-9 下午04時03分14秒: Refreshing [/WordCount/pom.xml]

14-12-9 下午04時03分14秒: Refreshing [/WordCount/pom.xml]

14-12-9 下午04時03分14秒: Updating index central|http://repo1.maven.org/maven2

14-12-9 下午04時04分10秒: Updated index for central|http://repo1.maven.org/maven2

 


 

6, Lib包導入:
需要添加的hadoop相應jar包有:

/hadoop-2.3.0/share/hadoop/common下所有jar包,及里面的lib目錄下所有jar包,
/hadoop-2.3.0/share/hadoop/hdfs下所有jar包,不包括里面lib下的jar包,
/hadoop-2.3.0/share/hadoop/mapreduce下所有jar包,不包括里面lib下的jar包,
/hadoop-2.3.0/share/hadoop/yarn下所有jar包,不包括里面lib下的jar包,
大概
18jar包左右。

 

 

7,Eclipse直接提交mapreduce任務所需要環境配置代碼如下所示:


  1. package wc;
  2. import java.io.IOException;
  3. import java.util.StringTokenizer;
  4. import org.apache.hadoop.conf.Configuration;
  5. import org.apache.hadoop.fs.Path;
  6. import org.apache.hadoop.io.IntWritable;
  7. import org.apache.hadoop.io.Text;
  8. import org.apache.hadoop.mapreduce.Job;
  9. import org.apache.hadoop.mapreduce.Mapper;
  10. import org.apache.hadoop.mapreduce.Reducer;
  11. import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
  12. import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
  13. import org.apache.hadoop.util.GenericOptionsParser;
  14.  
  15. public class W2 {

  16.     public static class TokenizerMapper extends
  17.             Mapper<Object, Text, Text, IntWritable> {
  18.         private final static IntWritable one = new IntWritable(1);
  19.         private Text word = new Text();
  20.         public void map(Object key, Text value, Context context)
  21.                 throws IOException, InterruptedException {
  22.             StringTokenizer itr = new StringTokenizer(value.toString());
  23.             while (itr.hasMoreTokens()) {
  24.                 word.set(itr.nextToken());
  25.                 context.write(word, one);
  26.             }
  27.         }
  28.     }
  29.  
  30.     public static class IntSumReducer extends
  31.             Reducer<Text, IntWritable, Text, IntWritable> {
  32.         private IntWritable result = new IntWritable();
  33.         public void reduce(Text key, Iterable<IntWritable> values,
  34.                 Context context) throws IOException, InterruptedException {
  35.             int sum = 0;
  36.             for (IntWritable val : values) {
  37.                 sum += val.get();
  38.             }
  39.             result.set(sum);
  40.             context.write(key, result);
  41.         }
  42.     }
  43.  
  44.     public static void main(String[] args) throws Exception {
  45.  
  46.         Configuration conf = new Configuration(); System.setProperty(\


 

8、運行

 8.1、在HDFS上創建目錄input

 [hadoop@name01 hadoop-2.3.0]$ hadoop fs -ls /

[hadoop@name01 hadoop-2.3.0]$  hadoop fs -mkdir input

mkdir: `input': No such file or directory

[hadoop@name01 hadoop-2.3.0]$ PSfs需要全目錄的方式來創建文件夾

如果Apache hadoop版本是0.x 或者1.x,

  bin/hadoop hdfs fs -mkdir -p /in

  bin/hadoop hdfs fs  -put /home/du/input   /in

 

如果Apache hadoop版本是2.x.

  bin/hdfs  dfs  -mkdir -p /in

  bin/hdfs  dfs   -put /home/du/input   /in

 

如果是發行版的hadoop,比如Cloudera CDH,IBM BI,Hortonworks HDP 則第一種命令即可。要注意創建目錄的全路徑。另外hdfs的根目錄是 /


 

2、拷貝本地README.txtHDFSinput

[hadoop@name01 hadoop-2.3.0]$ find . -name README.txt

./share/doc/hadoop/common/README.txt

[hadoop@name01 ~]$ hadoop fs -copyFromLocal ./src/hadoop-2.3.0/share/doc/hadoop/common/README.txt /data/input

[hadoop@name01 ~]$

 [hadoop@name01 ~]$ hadoop fs -ls /
Found 2 items
drwxr-xr-x   - hadoop supergroup          0 2014-12-15 23:34 /data
-rw-r--r--   3 hadoop supergroup         88 2014-08-26 02:21 /input
You have new mail in /var/spool/mail/root
[hadoop@name01 ~]$

3,運行hadoop結束后,查看輸出結果
(1),直接在hadoop服務器上面查看
[hadoop@name01 ~]$ hadoop fs -ls /data/
Found 2 items
drwxr-xr-x   - hadoop supergroup          0 2014-12-15 23:29 /data/input
drwxr-xr-x   - hadoop supergroup          0 2014-12-15 23:34 /data/output
[hadoop@name01 ~]$ 

(2),去Eclipse下查看


(3),在控制臺上查看信息

  1. 2014-12-16 15:34:01,303 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(996)) - session.id is deprecated. Instead, use dfs.metrics.session-id
  2. 2014-12-16 15:34:01,309 INFO [main] jvm.JvmMetrics (JvmMetrics.java:init(76)) - Initializing JVM Metrics with processName=JobTracker, sessionId=
  3. 2014-12-16 15:34:02,047 INFO 

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢