什麼是Apache Hadoop的春天?

概觀: 彈簧 is one of the widely used frameworks in enterprise applications development. 彈簧 有一個像春天的ORM不同的組件, 春天JDBC等,以支持不同的功能. 春季為Apache Hadoop是支持像Hadoop的HDFS應用組件建設框架, MapReduce和蜂巢等. 彈簧 提供API,所有這些組件協同工作. Spring還支持與其他春天生態系統項目為現實生活中的應用開發Hadoop的集成. 在這篇文章中,我們將討論的用法 彈簧 為Apache的Hadoop框架.

介紹:
Apache的Hadoop是一個開源軟件框架, 這是用來存儲和處理數據集較大體積的. 春天也是一個開源框架, 它廣泛用於在Java / J2EE應用程序. Spring的依賴注入 (作者:) 或控制反轉 (IO) 機制已成為一種流行的替代企業Java Beans (或EJB) 模型. 春天有被足夠靈活的優勢,與任何其他開發框架很容易地插入. 使用Spring的這個優勢, 我們可以與Apache Hadoop的插上它來幫助我們每兩個框架的最大利益.

入門:
在本節中,我們將討論如何創建使用Spring的Hadoop MapReduce工作. 這涉及到以下步驟: -

  • Step 1 - 獲得使用Maven所需的依賴 - 正如我們所知道Maven是高度依賴於pom.xml文件, 我們輸入以下內容在我們的pom.xml文件. 這些依賴項是Hadoop的核心和Spring框架.

清單1: 在pom.xml文件示例配置條目

[碼]

< !– 春季數據的Apache Hadoop的 — >
< 依賴 >
< 的groupId > org.springframework.data </ 的groupId >
< 的artifactId > 彈簧數據的Hadoop </ 的artifactId >
< version > 1.0.0.發布 </ version >
< /依賴 >
< !– Apache的Hadoop的核心 - - >
< 依賴 >
< 的groupId > org.apache.hadoop </ 的groupId >
< 的artifactId > Hadoop的核心 </ 的artifactId >
< version > 1.0.3 </version >
</依賴>

[/ 碼]

  • Step 2 - 創建映射器組件 - 我們知道一個映射器組件被用來打破的實際問題分解成更小的組件. 這些較小的組件,然後變得更容易解決. 我們可以通過擴展Apache的地圖減少映射類有我們自己的定制映射器組件. 我們需要重寫此類的地圖方法. 映射器類有下面的四個參數 -

對於輸入: 下面的參數輸入鍵和值

  • THEN - 該參數描述被提供作為輸入到映射器組件的主要類型.
  • VALUEIN - 該參數描述了作為輸入到映射器組件提供的值的類型.

對於輸出: 以下的參數是輸出鍵和值

  • KEYOUT - 此參數描述把關鍵參數從mapper組件出的類型.
  • VALUEOUT - 該參數描述了從映射器元件的輸出值的類型.

每個參數必須實現 可寫的 interface. 在給出的例子, 我們使用我們的映射器一次讀取一個文件中的一個行的內容,並準備每行的鍵 - 值對. 我們的地圖方法的實現執行以下任務 -

  • First, 每個分割一行成詞
  • , 通過每一個字重複,並採取了既不所有的Unicode字符既不是字母也不人物.
  • , 使用的寫入方法構造一個鍵值對 上下文 類與預期輸出的鍵值對兼容.

Listing2: 樣品定制映射類

[Code]

公共類MyWordMapper擴展映射<LongWritable, 文本, 文本, IntWritable> {
私人文本myword =新文本();

@覆蓋
保護無效地圖(LongWritable關鍵, 文本值, 上下文的背景下) 拋出IOException異常, InterruptedException的 {
串線= value.toString();
StringTokenizer的lineTokenz =新的StringTokenizer(line);
while (lineTokenz.hasMoreTokens()) {
字符串cleaned_data = removeNonLettersNonNumbers(lineTokenz.nextToken());
myword.set(cleaned_data);
context.write(myword, 新IntWritable(1));
}
}

/**
* 更換既不是數字也不是字母加一個空字符串所有Unicode字符.
* @參數原創, 它是原字符串
* 返回:只包含字母和數字的字符串對象
*/
私人字符串removeNonLettersNonNumbers (原字符串) {
返回original.replaceAll(“[^ \ p{L}\\p{N}]”, “”);
}
}

[/Code]

Step 3 - 創建 減速器 組件 - 減速是刪除不需要的中間值,並只轉發那些鍵值對其中相關的組件. 有我們的定制減速機, 我們的類應該延長 減速器 級及以上乘坐的降低方法. 減速機類有下面的四個參數.

對於輸入: 下面的參數輸入鍵和值

  • THEN - 該參數描述被提供作為輸入到映射器組件的主要類型.
  • VALUEIN - 該參數描述了作為輸入到映射器組件提供的值的類型.

對於輸出: 以下的參數是輸出鍵和值

  • KEYOUT - 此參數描述把關鍵參數從mapper組件出的類型
  • VALUEOUT - 該參數描述了從映射器元件的輸出值的類型.

在實施我們必須確保了“科印”和“KEYOUT”參數的數據類型相同. 也'valuein'和valueout'參數應相同類型的. 我們的減少方法的實施將執行以下步驟: -

  • First, 檢查輸入鍵包含所需單詞.
  • , 如果上述步驟是真, 獲得的單詞出現的次數.
  • , 通過調用減速器類的write方法構造一個新的鍵值對.

Listing3: 樣品定制減速類

[Code]

進口org.apache.hadoop.io.IntWritable;
進口org.apache.hadoop.io.Text;
進口org.apache.hadoop.mapreduce.Reducer;

公共類MyWordReducer擴展減速<文本, IntWritable, 文本, IntWritable> {
受保護的靜態最後弦樂MY_TARGET_TEXT = “Hadoop的”;

@覆蓋
保護無效減少(文字keyTxt, 可迭代<IntWritable> values, 上下文的背景下) 拋出IOException異常, InterruptedException的 {
如果 (containsTargetWord(keyTxt)) {
INT wCount = 0;
為 (IntWritable值: values) {
wCount = value.get();
}
context.write(key, 新IntWritable(wCount));
}
}
私人布爾containsTargetWord(文字keyTxt) {
返回keyTxt.toString().等於(MY_TARGET_TEXT);
}
}

[/Code]

  • Step 4 - 創建應用程序上下文 - 下一步是創建使用XML的應用程序上下文. 我們可以配置使用以下步驟我們的應用程序的應用程序上下文 -
    • 創建一個屬性文件,其中包含配置屬性的值. 示例應用程序屬性文件如下所示 -

[Code]
fs.default.name = HDFS://本地:9000
mapred.job.tracker =本地主機:9001
input.path = /路徑/要/輸入/文件/
output.path = /路徑/要/輸出/文件
[/Code]

  • 配置用來從創建的屬性文件中獲取配置屬性的值的屬性佔位符. 這可以通過在我們的應用程序上下文XML文件中添加應做到以下幾點 -

[Code]
<背景:財產佔位符的位置=”classpath:application.properties” />

[/Code]

  • 配置Apache Hadoop和它的工作 - 我們可以配置默認的文件系統,它的工作跟踪器在我們的應用程序上下文文件中添加以下

[Code]

<HDP:組態>
fs.default.name = ${fs.default.name}
mapred.job.tracker = ${mapred.job.tracker}
</HDP:組態>

[/Code]

我們要添加以下在我們的應用程序上下文XML文件來定義作業跟踪器 -

[Code]
<HDP:作業id =”wordCountJobId”
輸入路徑=”${input.path}”
輸出路徑=”${output.path}”
罐逐類=”net.qs.spring.data.apachehadoop.Main”
映射器=”net.qs.spring.data.apachehadoop.MyWordMapper”
減速=”net.qs.spring.data.apachehadoop.MyWordReducer”/>

[/Code]

  • 配置它運行Hadoop的創建作業的作業亞軍. 作業亞軍可以通過我們的應用程序上下文XML文件中添加下列配置

[Code]
<HDP:工作亞軍ID =”wordCountJobRunner” 工作-REF =”wordCountJobId” 運行在-啟動=”真”/>
[/Code]

  • Step 5 – 裝載應用程序環境在啟動時 - 當應用程序啟動我們現在可以通過加載應用程序上下文中執行創建工作的Hadoop. 我們可以通過創建一個接受我們的應用程序上下文文件作為輸入參數的名稱給構造函數的ClassPathXmlApplicationContext對象的實例做到這一點. 這是可以做到的下 -

Listing4: 應用程序上下文的樣本顯示加載

[Code]
進口org.springframework.context.ApplicationContext;
進口org.springframework.context.support.ClassPathXmlApplicationContext;

公共類主 {
公共靜態無效的主要(串[] 參數) {
ApplicationContext的CTX =新的ClassPathXmlApplicationContext(“applicationContext.xml中”);
}
}

[/Code]

  • Step 6 - 運行MapReduce工作 - 我們就可以開始我們的地圖使用以下步驟減少工作 -
  • 上傳輸入文件到HDFS - 我們可以通過在命令提示符下執行以下命令來做到這一點 -

[Code]

Hadoop的DFS -put sample.txt的/input/sample.txt

[/Code]

以下是這已在本實施例中使用的樣品輸入文件. 目標關鍵詞“Hadoop的“ 中突出 綠色. 這個單詞 'Hadoop的“ 存在 4 樣品中次.

Input

輸入

此搜索: 示例輸入文件

  • 檢查文件是否已被運行以下命令上傳成功. 它將顯示輸入文件.

[碼]

Hadoop的DFS -ls /輸入

[/碼]

  • 運行MapReduce工作. 這可以通過從IDE執行我們的java文件的主要方法來完成. 如果所有的步驟,如預期那麼下面將是輸出.

產量: Hadoop的 4
Summary: 讓我們總結一下我們在下面的子彈至今討論 –

  • 彈簧Hadoop的 來自開源社區的有用框架.
  • 通過結合這些,我們可以得到兩個框架的好處.
  • 創建地圖減少作業中使用Spring是一個六步過程如上所述.
標籤:
============================================= ============================================== 在亞馬遜上購買最佳技術書籍,en,電工CT Chestnutelectric,en
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share