2013-11-27 70 views
0

我想知道是否有可能在Hadoop中運行非mapreduce作業,比如說打印「hello word」的java程序。如果是這樣,請給我一個例子嗎? 非常感謝。在Hadoop中運行非mapreduce工作

+0

嗯Hadoop是一個數據庫......這不是一個操作系統 – Pepe

+0

但我們可以提交MapReduce的工作吧,對。我在網上看到了一些例子:conf.setMapperClass(Map.class); conf.setCombinerClass(Reduce.class); conf.setReducerClass(Reduce.class);但是,如果它是一個簡單的java,則不會有Map或Reduce類。它只有一個主要功能 – user3034824

+0

map-reduce的基本思想是將任務分解爲子任務並且並行處理它們。當你向Hadoop提交一份工作時,它會讀取輸入並將其拆分並將每個拆分傳遞給映射器,然後將結果傳遞給reducer。 'hello word'並不是hadoop背後的想法,這就是爲什麼我們有'字數'作爲hadoop –

回答

1

你可以創建一個罐子,用hadoop jar運行:

[[email protected] hellworld]# cat HelloWorld.java 

public class HelloWorld { 

    public static void main(String[] args) throws Exception { 
     System.out.println("Hello World!"); 
}} 


[[email protected] hellworld]# javac HelloWorld.java 
[[email protected] hellworld]# jar cvf helloworld.jar HelloWorld.class 

[[email protected] hellworld]# ~/Downloads/hadoop-2.1.0-beta/bin/hadoop jar helloworld.jar HelloWorld 
Hello World! 
+0

它的工作原理!非常感謝你~~ – user3034824

+1

由於這個答案被我的接受,我假設所有OP都想要將hadoop jar添加到classpath中。我認爲這個問題是關於如何在hadoop中進行分佈式計算,而不是MapReduce工作流。 –

2

使用Hadoop 1.x和之前版本是不可能的。但是,這正是YARN所設計的。 MapReduce 2.0建立在YARN之上。

YARN是分佈式資源管理的抽象。檢查出來here

編輯:其實我說謊,在Hadoop的1.x和之前仍然有些可能做到非MapReduce作業一些兩輪牛車。如果您看到Apache Giraph的實現方式,他們會掛鉤到MapReduce框架中來執行任務分配。 Mapper只是成爲他們啓動真實代碼的容器。但在我看來,這不是一個優雅的解決方案。自YARN發佈以來,YARN上還有一個Giraph的實現(再次,恕我直言)更加優雅。

+0

的基本示例非常感謝。讓我先試試它。 – user3034824