1. 程式人生 > >Hadoop學習筆記—6.Hadoop Eclipse外掛的使用

Hadoop學習筆記—6.Hadoop Eclipse外掛的使用

開篇:Hadoop是一個強大的並行軟體開發框架,它可以讓任務在分散式叢集上並行處理,從而提高執行效率。但是,它也有一些缺點,如編碼、除錯Hadoop程式的難度較大,這樣的缺點直接導致開發人員入門門檻高,開發難度大。因此,Hadop的開發者為了降低Hadoop的難度,開發出了Hadoop Eclipse外掛,它可以直接嵌入到Hadoop開發環境中,從而實現了開發環境的圖形介面化,降低了程式設計的難度。

一、天降神器外掛-Hadoop Eclipse

  Hadoop Eclipse是Hadoop開發環境的外掛,在安裝該外掛之前需要首先配置Hadoop的相關資訊。使用者在建立Hadoop程式時,Eclipse外掛會自動匯入Hadoop程式設計介面的jar檔案,這樣使用者就可以在Eclipse外掛的圖形介面中進行編碼、除錯和執行Hadop程式,也能通過Eclipse外掛檢視程式的實時狀態、錯誤資訊以及執行結果。除此之外,使用者還可以通過Eclipse外掛對HDFS進行管理和檢視。

  總而言之,Hadoop Eclipse外掛不僅安裝簡單,使用起來也很方便。它的功能強大,特別在Hadoop程式設計方面為開發者降低了很大的難度,是Hadoop入門和開發的好幫手!

二、Hadoop Eclipse的開發配置

2.1 獲取Hadoop Eclipse外掛

  (1)為了方便,我們可以直接百度一下,我這裡hadoop版本是1.1.2,因此只需要搜尋一下hadoop-eclipse-plugin-1.1.2.jar即可,我們可以從下面的連結中下載該外掛。

  (2)將下載下來的外掛jar檔案放置到eclipse的plugins目錄下,然後重新啟動eclipse。

  (3)重新啟動eclipse之後,單擊按鈕,新增hadoop eclipse外掛檢視按鈕:首先選擇Other選項,彈出如下圖所示的對話方塊,從中選擇Map/Reduce選項,然後單擊OK即可。

  (4)新增完成後,eclipse中就會多出一個Map/Reduce檢視按鈕,我們可以點選進入Map/Reduce工作目錄檢視:

2.2 Hadoop Eclipse外掛的基本配置

  (1)設定Hadoop的安裝目錄

  在eclipse中選擇Windows→Preference按鈕,彈出一個對話方塊,在該對話方塊左側會多出一個Hadoop Map/Reduce選項,然後單擊此選項,在右側設定Hadoop的安裝目錄。

  (2)設定Hadoop的叢集資訊

  這裡需要與Hadoop叢集建立連線,在Map/Reduce Locations介面中右擊,彈出選項條,選擇New Hadoop Location選項;

  在彈出的對話方塊中填寫連線hadoop叢集的資訊,如下圖所示:

  在上圖所示的紅色區域是我們需要關注的地方,也是我們需要好好填寫的地方。

PS:Location name: 這個隨便填寫,我填寫的是我的Hadoop Master節點的主機名;

Map/Reduce Master 這個框裡:
Host:就是jobtracker 所在的叢集機器,我這裡是192.168.80.100
Hort:就是jobtracker 的port,這裡寫的是9001(預設的埠號)
這兩個引數就是mapred-site.xml裡面mapred.job.tracker裡面的ip和port;

 
DFS Master 這個框裡:
Host:就是namenode所在的叢集機器,我這裡由於是偽分佈,都在192.168.80.100上面
Port:就是namenode的port,這裡寫9000(預設的埠號)
這兩個引數就是core-site.xml裡面fs.default.name裡面的ip和port
(Use M/R master host,這個複選框如果選上,就預設和Map/Reduce Master這個框裡的host一樣,如果不選擇,就可以自己定義輸入,這裡jobtracker 和namenode在一個機器上,所以是一樣的,就勾選上)

User name:這個是連線hadoop的使用者名稱,我這裡是root使用者;

  接下來,單擊Advanced parameters選項卡中的hadoop.tmp.dir選項,修改為你的Hadoop叢集中設定的地址,我這裡Hadoop叢集中設定的地址是/usr/local/hadoop/tmp,然後單擊Finish按鈕(這個引數在core-site.xml中進行了配置)

PS:Advanced parameters選項卡中大部分的屬性都已經自動填寫上了,其實就是把那幾個核心xml配置檔案裡面的一些配置屬性展示出來。

  剛剛的配置完成後,返回eclipse中,我們可以看到在Map/Reduce Locations下面就會多出來一個Hadoop-Master的連線項,這就是剛剛建立的名為Hadoop-Master的Map/Reduce Location連線,如下圖所示:

2.3 檢視HDFS

  (1)通過選擇eclipse左側的DFS Locations下面的Hadoop-Master選項,就會展示出HDFS中的檔案結構;

  (2)這裡在testdir資料夾處右擊選擇一個指定的檔案,如下圖所示:

三、在Eclipse下執行WordCount程式

3.1 建立Map/Reduce專案

  選擇File→Other命令,找到Map/Reduce Project,然後選擇它,如下所示:

  輸入Map/Reduce工程的名稱,這裡取為:WordCount,單擊Finish按鈕完成,如下圖所示:

3.2 建立WordCount類

  這裡新建一個WordCount類,輸入以下程式碼:

public class WordCount extends Configured implements Tool {

    /**
     * @author Edison Chou
     * @version 1.0
     */
    public static class MyMapper extends
            Mapper<LongWritable, Text, Text, LongWritable> {
        /*
         * @param KEYIN →k1 表示每一行的起始位置(偏移量offset)
         * 
         * @param VALUEIN →v1 表示每一行的文字內容
         * 
         * @param KEYOUT →k2 表示每一行中的每個單詞
         * 
         * @param VALUEOUT →v2表示每一行中的每個單詞的出現次數,固定值為1
         */
        protected void map(LongWritable key, Text value,
                Mapper<LongWritable, Text, Text, LongWritable>.Context context)
                throws java.io.IOException, InterruptedException {
            Counter sensitiveCounter = context.getCounter("Sensitive Words:", "Hello");
            
            String line = value.toString();
            // 這裡假定Hello是一個敏感詞
            if(line.contains("Hello")){
                sensitiveCounter.increment(1L);
            }
            String[] spilted = line.split(" ");
            for (String word : spilted) {
                context.write(new Text(word), new LongWritable(1L));
            }
        };
    }

    /**
     * @author Edison Chou
     * @version 1.0
     */
    public static class MyReducer extends
            Reducer<Text, LongWritable, Text, LongWritable> {
        /*
         * @param KEYIN →k2 表示每一行中的每個單詞
         * 
         * @param VALUEIN →v2 表示每一行中的每個單詞的出現次數,固定值為1
         * 
         * @param KEYOUT →k3表示每一行中的每個單詞
         * 
         * @param VALUEOUT →v3 表示每一行中的每個單詞的出現次數之和
         */
        protected void reduce(Text key,
                java.lang.Iterable<LongWritable> values,
                Reducer<Text, LongWritable, Text, LongWritable>.Context context)
                throws java.io.IOException, InterruptedException {
            long count = 0L;
            for (LongWritable value : values) {
                count += value.get();
            }
            context.write(key, new LongWritable(count));
        };
    }

    // 輸入檔案路徑
    public static String INPUT_PATH = "hdfs://hadoop-master:9000/testdir/input/words.txt";
    // 輸出檔案路徑
    public static String OUTPUT_PATH = "hdfs://hadoop-master:9000/testdir/output/wordcount";

    @Override
    public int run(String[] args) throws Exception {
        // 首先刪除輸出路徑的已有生成檔案
        FileSystem fs = FileSystem.get(new URI(INPUT_PATH), getConf());
        Path outPath = new Path(OUTPUT_PATH);
        if (fs.exists(outPath)) {
            fs.delete(outPath, true);
        }

        Job job = new Job(getConf(), "WordCount");
        // 設定輸入目錄
        FileInputFormat.setInputPaths(job, new Path(INPUT_PATH));
        // 設定自定義Mapper
        job.setMapperClass(MyMapper.class);
        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(LongWritable.class);
        // 設定自定義Reducer
        job.setReducerClass(MyReducer.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(LongWritable.class);
        // 設定輸出目錄
        FileOutputFormat.setOutputPath(job, new Path(OUTPUT_PATH));

        System.exit(job.waitForCompletion(true) ? 0 : 1);
        return 0;
    }

    public static void main(String[] args) {
        Configuration conf = new Configuration();
        try {
            int res = ToolRunner.run(conf, new WordCount(), args);
            System.exit(res);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
View Code

3.3 執行WordCount程式

  選擇WordCount並右擊,選擇Run on Hadoop方式執行,如下圖所示:

  執行結果如下圖所示:

3.4 檢視HDFS中的執行結果

  開啟設定的輸出資料夾output下的part-r-00000檔案,就是WordCount程式的執行結果,如下圖所示:

參考資料

作者:周旭龍

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連結。

相關推薦

Hadoop學習筆記6.Hadoop Eclipse外掛的使用

開篇:Hadoop是一個強大的並行軟體開發框架,它可以讓任務在分散式叢集上並行處理,從而提高執行效率。但是,它也有一些缺點,如編碼、除錯Hadoop程式的難度較大,這樣的缺點直接導致開發人員入門門檻高,開發難度大。因此,Hadop的開發者為了降低Hadoop的難度,開發出了Hadoop Eclipse外掛,它

hadoop學習筆記2---hadoop的三種運行模式

hadoop1、單機模式安裝簡單,在一臺機器上運行服務,幾乎不用做任何配置,但僅限於調試用途。沒有分布式文件系統,直接讀寫本地操作系統的文件系統。2、偽分布式模式在單節點上同時啟動namenode、datanode、jobtracker、tasktracker、secondary namenode等進程,模擬

hadoop學習筆記1---Hadoop體系介紹

hadoop1、NamenodeHDFS的守護進程記錄文件時如何分割成數據塊的,以及這些數據塊被存儲到哪些節點上對內存和I/O進行集中管理是個單點,發生故障將使集群崩潰2、Secondary Namenode監控HDFS狀態的輔助後臺程序每個集群都有一個與NameNode進行通訊定期保存HDFS元數據快照當N

hadoop學習筆記(一)——hadoop安裝及測試

這幾天乘著工作之餘,學習了一下hadoop技術,跌跌撞撞的幾天,終於完成了一個初步的hadoop的安裝及測試,具體如下: 動力:工作中遇到的資料量太大,伺服器已經很吃力,sql語句執行老半天,故想用大

[Hadoop] Hadoop學習筆記Hadoop基礎

1 Hadoop是什麼?   Google公司發表了兩篇論文:一篇論文是“The Google File System”,介紹如何實現分散式地儲存海量資料;另一篇論文是“Mapreduce:Simplified Data Processing on Large Clusters”,介紹如何對分散式大規模

Hadoop學習筆記—3.Hadoop RPC機制的使用

一、RPC基礎概念 1.1 RPC的基礎概念   RPC,即Remote Procdure Call,中文名:遠端過程呼叫;   (1)它允許一臺計算機程式遠端呼叫另外一臺計算機的子程式,而不用去關心底層的網路通訊細節,對我們來說是透明的。因此,它經常用於分散式網路通訊中。 RPC協議假定某些傳輸

Hadoop學習筆記】——Hadoop基礎

大資料時代 當前時代是資料爆炸的時代,全球各個網站、電子裝置等都在源源不斷地產生著大量資料.2006年數字世界專案統計得出全球資料總量為0.18ZB,2011年全球資料量1.8

Hadoop學習筆記-入門偽分散式配置(Mac OS,0.21.0,Eclipse 3.6

11/09/04 22:32:33 WARN conf.Configuration: DEPRECATED: hadoop-site.xml found in the classpath. Usage of hadoop-site.xml is deprecated. Instead use core-s

Hadoop學習筆記———《Mac OS X 下hadoop2.6.0安裝教程》

1、安裝jdk 2、ssh免密碼登陸 2.1、在終端命令列下輸入: $ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 其中''裡的是登陸的密碼,因為

hadoop學習筆記-HDFS的REST接口

字段 edi -o created hadoop ftw rar hdfs lang 在學習HDFS的過程中,重點關註了HDFS的REST訪問接口。以前對REST的認識非常籠統,這次通過對HDFS的REST接口進行實際操作,形成很直觀的認識。 1? 寫文件操作 寫文件

Hadoop 學習筆記 (2) -- 關於MapReduce

規模 pre 分析 bsp 學習筆記 reduce 數據中心 階段 圖例 1. MapReduce 定義: 是一種可用於數據處理的編程的模型 優勢: MapReduce 本質上是並行運行的,因此可以將大規模的數據分析任務,分發給任何一個擁有足夠多機器

hadoop學習筆記(1)

ppi datanode ati fonts 管理系 ive 監控 system 分配 1.HDFS架構: NameNode保存元數據信息,包含文件的owner,permission。block存儲信息等。存儲在內存。 2.HDFS設計思想

Hadoop學習筆記:MapReduce框架詳解

object 好的 單點故障 提高 apr copy 普通 exce 代表性 開始聊mapreduce,mapreduce是hadoop的計算框架,我學hadoop是從hive開始入手,再到hdfs,當我學習hdfs時候,就感覺到hdfs和mapreduce關系的緊密。這個

七、Hadoop學習筆記————調優之Hadoop參數調優

node 參數 受限 .com 資源 mage 預留空間 嘗試 nod dfs.datanode.handler.count默認為3,大集群可以調整為10 傳統MapReduce和yarn對比 如果服務器物理內存128G,則容器內存建議為100比較合理 配置總

八、Hadoop學習筆記————調優之Hive調優

需要 cnblogs log logs nbsp .cn 集中 bsp 9.png 表1表2的join和表3表4的join同時運行 此法需要關註是否有數據傾斜(大量數據集中在某一區間段) 八、Hadoop學習筆記————調優之Hive調優

Hadoop學習筆記—5.自定義類型處理手機上網日誌

clas stat 基本 手機上網 oop interrupt pil 依然 手機號碼 一、測試數據:手機上網日誌 1.1 關於這個日誌   假設我們如下一個日誌文件,這個文件的內容是來自某個電信運營商的手機上網日誌,文件的內容已經經過了優化,格式比較規整,便於學習研究。

Hadoop學習筆記—18.Sqoop框架學習

max lec sql數據庫 creat rec apt 成功 不同的 mysql數據庫 一、Sqoop基礎:連接關系型數據庫與Hadoop的橋梁 1.1 Sqoop的基本概念     Hadoop正成為企業用於大數據分析的最熱門選擇,但想將你的數據移植過去並不容易。Apa

Hadoop學習筆記系列文章導航

集群 影子 1.5 .com 日誌分析 尋找 思想 硬件 力量 一、為何要學習Hadoop?   這是一個信息爆炸的時代。經過數十年的積累,很多企業都聚集了大量的數據。這些數據也是企業的核心財富之一,怎樣從累積的數據裏尋找價值,變廢為寶煉數成金成為當務之急。但數據增長的速

Hadoop學習筆記—16.Pig框架學習

rar 開發人員 ava 大型 arr 壓縮包 上網 結構化數據 模式 一、關於Pig:別以為豬不能幹活 1.1 Pig的簡介   Pig是一個基於Hadoop的大規模數據分析平臺,它提供的SQL-LIKE語言叫Pig Latin,該語言的編譯器會把類SQL的數據分析請求

Hadoop學習筆記—15.HBase框架學習(基礎知識篇)

dfs hdfs keep 負載均衡 包含 兩個 列族 文件存儲 version HBase是Apache Hadoop的數據庫,能夠對大型數據提供隨機、實時的讀寫訪問。HBase的目標是存儲並處理大型的數據。HBase是一個開源的,分布式的,多版本的,面向列的存儲模型,它