Hadoop本地庫
本文講的是Hadoop本地庫,【IT168 資訊】鑑於效能問題以及某些Java類庫的缺失,對於某些元件,Hadoop提供了自己的本地實現。 這些元件儲存在Hadoop的一個獨立的動態連結的庫裡。這個庫在*nix平臺上叫libhadoop.so. 本文主要介紹本地庫的使用方法以及如何構建本地庫。
元件
Hadoop現在已經有以下 compression codecs本地元件:
zlib
gzip
lzo
在以上元件中,lzo和gzip壓縮編解碼器必須使用hadoop本地庫才能執行。
使用方法
hadoop本地庫的用法很簡單:
看一下 支援的平臺.
下載 預構建的32位i386架構的Linux本地hadoop庫(可以在hadoop發行版的lib/native目錄下找到)或者自己 構建 這些庫。
確保你的平臺已經安裝了zlib-1.2以上版本或者lzo2.0以上版本的軟體包或者兩者均已安裝(根據你的需要)。
bin/hadoop 指令碼通過系統屬性 -Djava.library.path=來確認hadoop本地庫是否包含在庫路徑裡。
檢查hadoop日誌檔案可以檢視hadoop庫是否正常,正常情況下會看到:
DEBUG util.NativeCodeLoader – Trying to load the custom-built native-hadoop library…
INFO util.NativeCodeLoader – Loaded the native-hadoop library
如果出錯,會看到:
INFO util.NativeCodeLoader – Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
支援的平臺
Hadoop本地庫只支援*nix平臺,已經廣泛使用在GNU/Linux平臺上,但是不支援 Cygwin 和 Mac OS X。
已經測試過的GNU/Linux發行版本:
RHEL4/Fedora
Ubuntu
Gentoo
在上述平臺上,32/64位Hadoop本地庫分別能和32/64位的jvm一起正常執行。
構建Hadoop本地庫
Hadoop本地庫使用 ANSI C 編寫,使用GNU autotools工具鏈 (autoconf, autoheader, automake, autoscan, libtool)構建。也就是說構建hadoop庫的平臺需要有標準C的編譯器和GNU autotools工具鏈。請參看 支援的平臺。
你的目標平臺上可能會需要的軟體包:
C 編譯器 (e.g. GNU C Compiler)
GNU Autools 工具鏈: autoconf, automake, libtool
zlib開發包 (stable version >= 1.2.0)
lzo開發包 (stable version >= 2.0)
如果已經滿足了上述先決條件,可以使用build.xml 檔案,並把其中的compile.native置為 true,這樣就可以生成hadoop本地庫:
$ ant -Dcompile.native=true
因為不是所有使用者都需要Hadoop本地庫,所以預設情況下hadoop不生成該庫。
你可以在下面的路徑檢視新生成的hadoop本地庫:
$ build/native//lib
其中是下列系統屬性的組合 ${os.name}-${os.arch}-${sun.arch.data.model};例如 Linux-i386-32。
注意
在生成hadoop本地庫的目標平臺上必須 安裝了zlib和lzo開發包;但是如果你只希望使用其中一個的話,在部署時,安裝其中任何一個都是足夠的。
在目標平臺上生成以及部署hadoop本地庫時,都需要根據32/64位jvm選取對應的32/64位zlib/lzo軟體包。
使用DistributedCache 載入本地庫
使用者可以通過 DistributedCache 載入本地共享庫,並分發和建立庫檔案的符號連結。
這個例子描述瞭如何分發庫檔案並在從map/reduce任務中裝載庫檔案。
首先拷貝庫檔案到HDFS。
bin/hadoop fs -copyFromLocal mylib.so.1 /libraries/mylib.so.1
啟動作業時包含以下程式碼:
DistributedCache.createSymlink(conf);
DistributedCache.addCacheFile(“hdfs://host:port/libraries/mylib.so.1#mylib.so”, conf);
map/reduce任務中包含以下程式碼:
System.loadLibrary(“mylib.so”);
原文釋出時間為:2009-06-15
本文作者: IT168.com
本文來自雲棲社群合作伙伴IT168,瞭解相關資訊可以關注IT168。
原文標題:Hadoop本地庫
相關文章
- 搭建本地執行Hadoop環境Hadoop
- maven 將本地jar打入本地倉庫MavenJAR
- Hadoop之Hive本地與遠端mysql資料庫管理模式安裝手冊HadoopHiveMySql資料庫模式
- 在本地搭建 SVN倉庫 和 git 倉庫 (倉庫僅限在本地使用)Git
- 本地yum庫製作及本地安裝DockerDocker
- hadoop本地庫與系統版本不一致引起的錯誤解決方法Hadoop
- Git 本地倉庫和裸倉庫Git
- Git本地倉庫基本操作Git
- git 刪除本地倉庫Git
- maven 建立本地倉庫Maven
- hadoop之旅6-windows本地MapReducer離線單詞統計HadoopWindows
- 本地Eclipse開發連線遠端阿里雲HadoopEclipse阿里Hadoop
- git本地倉庫關聯遠端倉庫Git
- 建立本地yum軟體源,為本地Package安裝Cloudera Manager、Cloudera Hadoop及Impala做準備PackageCloudHadoop
- 用命令將本地jar包匯入到本地maven倉庫JARMaven
- maven本地倉庫安裝jarMavenJAR
- SQLserver本地資料庫開發SQLServer資料庫
- Java 程式碼本地設定Hadoop使用者名稱密碼JavaHadoop密碼
- git 修改本地倉庫的遠端倉庫地址Git
- java 批量上傳mvn本地倉庫Java
- Docker基礎-搭建本地私有倉庫Docker
- php sqlite 建立本地資料庫PHPSQLite資料庫
- MySQL資料庫本地事務原理MySql資料庫
- git本地倉庫與GitHub的同步Github
- 新增jar包到本地Maven倉庫JARMaven
- docker使用容器搭建本地私有倉庫Docker
- git 本地push到遠端倉庫Git
- Maven-修改maven本地倉庫地址Maven
- docker push到本地倉庫失敗Docker
- 【WP7】本地資料庫使用資料庫
- 使用Nexus搭建Maven本地倉庫Maven
- 本地部署AI問答知識庫AI
- 模型程式碼理解本地知識庫模型
- Hadoop元件--分散式資料庫HbaseHadoop元件分散式資料庫
- 比較SQL資料庫和HadoopSQL資料庫Hadoop
- 本地倉庫推送到遠端倉庫的git操作Git
- MAVEN新增本地倉庫和注意事項!Maven
- git 入門教程之本地倉庫Git