當前位置:首頁 » 編程軟體 » snappy編譯

snappy編譯

發布時間: 2023-07-15 07:26:40

㈠ 如何安裝hadoop本地壓縮

Hadoop安裝配置snappy壓縮

[一]、 實驗環境

CentOS 6.3 64位

Hadoop 2.6.0

JDK 1.7.0_75

[二]、 snappy編譯安裝

2.1、下載源碼

到官網 http://code.google.com/p/snappy/ 或者到 https://github.com/google/snappy
下載源碼,目前版本為 1.1.1。

2.2、編譯安裝

解壓 tar -zxvf snappy-1.1.1.tar.gz ,然後以 root 用戶 執行標準的三步進行編譯安裝:

/configure

make

make install

默認是安裝到 /usr/local/lib ,這時在此目錄下查看:

[hadoop@micmiu ~]$ ls -lh /usr/local/lib |grep snappy

-rw-r--r-- 1 root root 229K Mar 10 11:28 libsnappy.a

-rwxr-xr-x 1 root root 953 Mar 10 11:28 libsnappy.la

lrwxrwxrwx 1 root root 18 Mar 10 11:28 libsnappy.so ->
libsnappy.so.1.2.0

lrwxrwxrwx 1 root root 18 Mar 10 11:28 libsnappy.so.1 ->
libsnappy.so.1.2.0

-rwxr-xr-x 1 root root 145K Mar 10 11:28 libsnappy.so.1.2.0

安裝過程沒有錯誤同時能看到上面的動態庫,基本表示snappy 安裝編譯成功。

[三]、Hadoop snappy 安裝配置

3.1、hadoop 動態庫重新編譯支持snappy

hadoop動態庫編譯參考:Hadoop2.2.0源碼編譯 和 Hadoop2.x在Ubuntu系統中編譯源碼 ,只是把最後編譯的命令中增加
-Drequire.snappy :

1mvn package -Pdist,native -DskipTests -Dtar -Drequire.snappy

把重新編譯生成的hadoop動態庫替換原來的。

3.2、hadoop-snappy 下載

目前官網沒有軟體包提供,只能藉助 svn 下載源碼:

1svn checkout http://hadoop-snappy.googlecode.com/svn/trunk/
hadoop-snappy

3.3、hadoop-snappy 編譯

1mvn package [-Dsnappy.prefix=SNAPPY_INSTALLATION_DIR]

PS:如果上面 snappy安裝路徑是默認的話,即 /usr/local/lib,則此處
[-Dsnappy.prefix=SNAPPY_INSTALLATION_DIR] 可以省略,或者
-Dsnappy.prefix=/usr/local/lib

編譯成功後,把編譯後target下的 hadoop-snappy-0.0.1-SNAPSHOT.jar 復制到 $HADOOP_HOME/lib
,同時把編譯生成後的動態庫 到 $HADOOP_HOME/lib/native/ 目錄下:

1cp -r
$HADOOP-SNAPPY_CODE_HOME/target/hadoop-snappy-0.0.1-SNAPSHOT/lib/native/linux-amd64-64
$HADOOP_HOME/lib/native/

3.4、編譯過程中常見錯誤處理

① 缺少一些第三方依賴

官方文檔中提到編譯前提需要:gcc c++, autoconf, automake, libtool, java 6, JAVA_HOME set,
Maven 3

②錯誤信息:

[exec] libtool: link: gcc -shared
src/org/apache/hadoop/io/compress/snappy/.libs/SnappyCompressor.o
src/org/apache/hadoop/io/compress/snappy/.libs/SnappyDecompressor.o
-L/usr/local/lib -ljvm -ldl -m64 -Wl,-soname -Wl,libhadoopsnappy.so.0 -o
.libs/libhadoopsnappy.so.0.0.1

[exec] /usr/bin/ld: cannot find -ljvm

[exec] collect2: ld returned 1 exit status

[exec] make: *** [libhadoopsnappy.la] Error 1

或者

[exec] /bin/sh ./libtool --tag=CC --mode=link gcc -g -Wall -fPIC -O2 -m64
-g -O2 -version-info 0:1:0 -L/usr/local/lib -o libhadoopsna/usr/bin/ld: cannot
find -ljvm

[exec] collect2: ld returned 1 exit status

[exec] make: *** [libhadoopsnappy.la] Error 1

[exec] ppy.la -rpath /usr/local/lib
src/org/apache/hadoop/io/compress/snappy/SnappyCompressor.lo
src/org/apache/hadoop/io/compress/snappy/SnappyDecompressor.lo -ljvm -ldl

[exec] libtool: link: gcc -shared
src/org/apache/hadoop/io/compress/snappy/.libs/SnappyCompressor.o
src/org/apache/hadoop/io/compress/snappy/.libs/SnappyDecompressor.o
-L/usr/local/lib -ljvm -ldl -m64 -Wl,-soname -Wl,libhadoopsnappy.so.0 -o
.libs/libhadoopsnappy.so.0.0.1

[ant] Exiting
/home/hadoop/codes/hadoop-snappy/maven/build-compilenative.xml.

這個錯誤是因為沒有把安裝jvm的libjvm.so 鏈接到
/usr/local/lib。如果你的系統時amd64,可以執行如下命令解決這個問題:

1ln -s /usr/java/jdk1.7.0_75/jre/lib/amd64/server/libjvm.so
/usr/local/lib/

[四]、hadoop配置修改

4.1、修改 $HADOOP_HOME/etc/hadoop/hadoop-env.sh,添加:

1export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native/Linux-amd64-64/

4.2、修改 $HADOOP_HOME/etc/hadoop/core-site.xml:

XHTML

io.compression.codecs

org.apache.hadoop.io.compress.GzipCodec,

org.apache.hadoop.io.compress.DefaultCodec,

org.apache.hadoop.io.compress.BZip2Codec,

org.apache.hadoop.io.compress.SnappyCodec

4.3、修改 $HADOOP_HOME/etc/hadoop/mapred-site.xml 中有關壓縮屬性,測試snappy:

XHTML

maprece.map.output.compress

true

maprece.map.output.compress.codec

org.apache.hadoop.io.compress.SnappyCodec[五]、測試驗證

全部配置好後(集群中所有的節點都需要動態庫和修改配置),重啟hadoop集群環境,運行自帶的測試實例
wordcount,如果maprece過程中沒有錯誤信息即表示snappy壓縮安裝方法配置成功。

當然hadoop也提供了本地庫的測試方法 hadoop checknative :

[hadoop@micmiu ~]$ hadoop checknative

15/03/17 22:57:59 INFO bzip2.Bzip2Factory: Successfully loaded &
initialized native-bzip2 library system-native

15/03/17 22:57:59 INFO zlib.ZlibFactory: Successfully loaded &
initialized native-zlib library

Native library checking:

hadoop: true
/usr/local/share/hadoop-2.6.0/lib/native/libhadoop.so.1.0.0

zlib: true /lib64/libz.so.1

snappy: true
/usr/local/share/hadoop/lib/native/Linux-amd64-64/libsnappy.so.1

lz4: true revision:99

bzip2: true /lib64/libbz2.so.1

openssl: true /usr/lib64/libcrypto.so

㈡ 如何在Docker上運行Ubuntu Core

對於Docker的安裝在官網上針對不同的操作系統分別進行了描述,Ubuntu上安裝Docker,對於ubuntu操作系統來說必須是64位的,因為Docker的官網上只是提供了64位的docker,如果需要32位的docker則需要下載源碼進行編譯,這里有篇文章介紹了Docker源碼如何進行編譯成32位,編譯32位的Docker。但是對於我使用的Ubuntu來說正好是32位的。通過下面的兩條命令可以看出操作系統的位數和Linux的內核版本。

root@ubuntu:/tmp#uname -a
Linux e529c1b7772a 3.13.0-12-generic #32-Ubuntu SMP Fri Feb 21 17:44:24 UTC 2014 i686 i686 i686 GNU/Linux
root@ubuntu:/tmp#file /sbin/init
/sbin/init: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=, stripped
如果想在32為的Ubuntu操作系統上運行Docker的話,就必須安裝32位的Docker。在Ubuntu中提供docker1.01-32位的deb包,可以直接點擊「docer1.01-32位deb包」跳轉到下載頁面。下載完成後,直接使用dpkg –i進行安裝。
dpkg -i docker.io_1.0.1~dfsg1-0ubuntu1~ubuntu0.14.04.1_i386.deb
Selecting previously unselected package docker.io.
(Reading database ... 150021 files and directories currently installed.)
Preparing to unpack docker.io_1.0.1~dfsg1-0ubuntu1~ubuntu0.14.04.1_i386.deb ...
Unpacking docker.io (1.0.1~dfsg1-0ubuntu1~ubuntu0.14.04.1) ...
Setting up docker.io (1.0.1~dfsg1-0ubuntu1~ubuntu0.14.04.1) ...
docker.io start/running, process 10456
Processing triggers for ureadahead (0.100.0-16) ...
Processing triggers for man-db (2.6.6-1) ...
也可以參考下面的這篇文章《Docker 1.0.1 已經可以在 Ubuntu 14.04 LTS 上測試了!》進行安裝。安裝完成後,可以使用下面的命令確定安裝的版本和基本的信息。由於docker使用go語言進行編寫的,所以要依賴於GO的編譯工具和庫文件。
oot@ubuntu:/tmp# docker version
Client version: 1.0.1
Client API version: 1.12
Go version (client): go1.2.1
Git commit (client): 990021a
Server version: 1.0.1
Server API version: 1.12
Go version (server): go1.2.1
Git commit (server): 990021a
root@ubuntu:/tmp# docker info
Containers: 1
Images: 7
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Dirs: 10
Execution Driver: native-0.2
Kernel Version: 3.13.0-12-generic
WARNING: No swap limit support
官方安裝方式docker pull imagename從docker的索引中心下載,imagename是鏡像名稱,例如docker pull ubuntu就是下載base ubuntu並且tag是latest。
root@ubuntu:/# docker pull ubuntu:14.04
Pulling repository ubuntu
c4ff7513909d: Download complete
511136ea3c5a: Download complete
1c9383292a8f: Download complete
9942dd43ff21: Download complete
d92c3c92fa73: Download complete
0ea0d582fd90: Download complete
cc58e55aa5a5: Download complete
root@ubuntu:~/Downloads# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu 14.04 c1b5399bd2ee 8 minutes ago 205.3 MB
learn/tutorial latest 8dbd9e392a96 17 months ago 128 MB
root@ubuntu:/# docker run -i -t ubuntu /bin/bash
2014/09/04 13:04:28 exec format error
docker run -i -t learn/tutorial /bin/bash
2014/09/04 14:45:13 exec format error
PS:在安裝完成Dokcer後,使用Pull命令sudo docker pull ubuntu:14.04從鏡像倉庫獲取ubuntu的鏡像後,然後使用run命令docker run -i -t ubuntu /bin/bash直接運行該鏡像時,會出現下面的錯誤信息,後來我又嘗試著使用官方演示使用的learn/tutorial鏡像,還是出現同樣的問題,現在懷疑可能是由於我安裝的DOcker是32位的,而Image是64位的不匹配造成的。前面說過Docker默認提供的都是64位,其中提供的Image自然也都是64位,所以會出現下面的錯誤信息。在Docker Hub Registry里的大多數鏡像都是64位。這里有一個關於該錯誤的討論帖「Ddocker.io: Docker should recommend
linux-image-amd64 」。所以,如果想在32位的Docker基礎上運行Ubuntu的Image那要求Ubuntu的image也必須是32位。這就需要製作32位Ubuntu的Image。這里有一個官方提供的可用的Ubuntu image的列表,Ubuntu Image tag。

㈢ apache kafka源碼怎麼編譯

Kafka is a distributed, partitioned, replicated commit log service. It provides the functionality of a messaging system, but with a unique design.(Kafka是一個分布式的、可分區的(partitioned)、基於備份的(replicated)和commit-log存儲的服務.。它提供了類似於messaging system的特性,但是在設計實現上完全不同)。kafka是一種高吞吐量的分布式發布訂閱消息系統,它有如下特性:
(1)、通過O(1)的磁碟數據結構提供消息的持久化,這種結構對於即使數以TB的消息存儲也能夠保持長時間的穩定性能。
(2)、高吞吐量:即使是非常普通的硬體kafka也可以支持每秒數十萬的消息。
(3)、支持通過kafka伺服器和消費機集群來分區消息。
(4)、支持Hadoop並行數據載入。
一、用Kafka裡面自帶的腳本進行編譯
下載好了Kafka源碼,裡面自帶了一個gradlew的腳本,我們可以利用這個編譯Kafka源碼:
1 # wget http://mirror.bit.e.cn/apache/kafka/0.8.1.1/kafka-0.8.1.1-src.tgz
2 # tar -zxf kafka-0.8.1.1-src.tgz
3 # cd kafka-0.8.1.1-src
4 # ./gradlew releaseTarGz
運行上面的命令進行編譯將會出現以下的異常信息:
01 :core:signArchives FAILED
02
03 FAILURE: Build failed with an exception.
04
05 * What went wrong:
06 Execution failed for task ':core:signArchives'.
07 > Cannot perform signing task ':core:signArchives' because it
08 has no configured signatory
09
10 * Try:
11 Run with --stacktrace option to get the stack trace. Run with
12 --info or --debug option to get more log output.
13
14 BUILD FAILED
這是一個bug(https://issues.apache.org/jira/browse/KAFKA-1297),可以用下面的命令進行編譯
1 ./gradlew releaseTarGzAll -x signArchives
這時候將會編譯成功(在編譯的過程中將會出現很多的)。在編譯的過程中,我們也可以指定對應的Scala版本進行編譯:
1 ./gradlew -PscalaVersion=2.10.3 releaseTarGz -x signArchives
編譯完之後將會在core/build/distributions/裡面生成kafka_2.10-0.8.1.1.tgz文件,這個和從網上下載的一樣,可以直接用。
二、利用sbt進行編譯
我們同樣可以用sbt來編譯Kafka,步驟如下:
01 # git clone https://git-wip-us.apache.org/repos/asf/kafka.git
02 # cd kafka
03 # git checkout -b 0.8 remotes/origin/0.8
04 # ./sbt update
05 [info] [SUCCESSFUL ] org.eclipse.jdt#core;3.1.1!core.jar (2243ms)
06 [info] downloading http://repo1.maven.org/maven2/ant/ant/1.6.5/ant-1.6.5.jar ...
07 [info] [SUCCESSFUL ] ant#ant;1.6.5!ant.jar (1150ms)
08 [info] Done updating.
09 [info] Resolving org.apache.hadoop#hadoop-core;0.20.2 ...
10 [info] Done updating.
11 [info] Resolving com.yammer.metrics#metrics-annotation;2.2.0 ...
12 [info] Done updating.
13 [info] Resolving com.yammer.metrics#metrics-annotation;2.2.0 ...
14 [info] Done updating.
15 [success] Total time: 168 s, completed Jun 18, 2014 6:51:38 PM
16
17 # ./sbt package
18 [info] Set current project to Kafka (in build file:/export1/spark/kafka/)
19 Getting Scala 2.8.0 ...
20 :: retrieving :: org.scala-sbt#boot-scala
21 confs: [default]
22 3 artifacts copied, 0 already retrieved (14544kB/27ms)
23 [success] Total time: 1 s, completed Jun 18, 2014 6:52:37 PM
對於Kafka 0.8及以上版本還需要運行以下的命令:
01 # ./sbt assembly-package-dependency
02 [info] Loading project definition from /export1/spark/kafka/project
03 [warn] Multiple resolvers having different access mechanism configured with
04 same name 'sbt-plugin-releases'. To avoid conflict, Remove plicate project
05 resolvers (`resolvers`) or rename publishing resolver (`publishTo`).
06 [info] Set current project to Kafka (in build file:/export1/spark/kafka/)
07 [warn] Credentials file /home/wyp/.m2/.credentials does not exist
08 [info] Including slf4j-api-1.7.2.jar
09 [info] Including metrics-annotation-2.2.0.jar
10 [info] Including scala-compiler.jar
11 [info] Including scala-library.jar
12 [info] Including slf4j-simple-1.6.4.jar
13 [info] Including metrics-core-2.2.0.jar
14 [info] Including snappy-java-1.0.4.1.jar
15 [info] Including zookeeper-3.3.4.jar
16 [info] Including log4j-1.2.15.jar
17 [info] Including zkclient-0.3.jar
18 [info] Including jopt-simple-3.2.jar
19 [warn] Merging 'META-INF/NOTICE' with strategy 'rename'
20 [warn] Merging 'org/xerial/snappy/native/README' with strategy 'rename'
21 [warn] Merging 'META-INF/maven/org.xerial.snappy/snappy-java/LICENSE'
22 with strategy 'rename'
23 [warn] Merging 'LICENSE.txt' with strategy 'rename'
24 [warn] Merging 'META-INF/LICENSE' with strategy 'rename'
25 [warn] Merging 'META-INF/MANIFEST.MF' with strategy 'discard'
26 [warn] Strategy 'discard' was applied to a file
27 [warn] Strategy 'rename' was applied to 5 files
28 [success] Total time: 3 s, completed Jun 18, 2014 6:53:41 PM
當然,我們也可以在sbt裡面指定scala的版本:
01 <!--
02 User: 過往記憶
03 Date: 14-6-18
04 Time: 20:20
05 bolg: http://www.iteblog.com
06 本文地址:http://www.iteblog.com/archives/1044
07 過往記憶博客,專注於hadoop、hive、spark、shark、flume的技術博客,大量的干貨
08 過往記憶博客微信公共帳號:iteblog_hadoop
09 -->
10 sbt "++2.10.3 update"
11 sbt "++2.10.3 package"
12 sbt "++2.10.3 assembly-package-dependency"

㈣ 樹莓派用什麼版本的Linux

樹莓派操作系統
根據偏好選擇下列之一。
5.1.1 Raspbian 「Jessie」
是Debian8.0在ARM的編譯版,加上針對樹莓派深度定製的硬體驅動與軟體程序。官方推薦系統。如果你第一次使用樹莓派,請下載這個。Debian的軟體策略偏保守,穩定第一,升級是次要的。
下載鏈接:http://downloads.raspberrypi.org/raspbian_latest
默認帳號:Username: pi Password: raspberry
發布日期:2015-09-20
5.1.2 Raspbian 「wheezy」
是Debian7.0在ARMv6的編譯版,加上針對樹莓派深度定製的硬體驅動與軟體程序。官方推薦系統。如果你第一次使用樹莓派,請下載這個。Debian的軟體策略偏保守,穩定第一,升級是次要的。
下載鏈接:http://downloads.raspberrypi.org/raspbian/images/raspbian-2015-05-07/2015-05-05-raspbian-wheezy.zip
默認帳號:Username: pi Password: raspberry
發布日期:2015-05-05
5.2 OpenELEC
運行快、且用戶體驗友好的一款XBMC媒體中心。
下載鏈接:http://downloads.raspberrypi.org/openelec_latest
發布日期:2014-06-14
5.3 Pidora
Pidora是社區對Fedora在樹莓派上的移植。不是Fedora官方版,但被Fedora官網推薦用於樹莓派。Pidora基於Fedora 18,採用另一個輕量桌面環境XFCE。Fedora的軟體策略相比於Debian,是略偏向先鋒的。Fedora能用到版本稍新,但也經受過實測調試的軟體包。
下載鏈接:http://downloads.raspberrypi.org/pidora_latest
默認帳號:Username: root Password: raspberrypi
發布日期:2014-07-03
5.4 Arch Linux ARM
著名輕量系統Arch Linux在ARM架構上的移植。注重對於開發者的簡潔,任何可有可無的軟體一律不自帶。僅有命令行界面,不建議初學者使用。Arch Linux的軟體策略是相當激進的,使用Arch Linux能用到最新的軟體包,但也需要承擔嘗鮮可能的風險。
下載鏈接:http://downloads.raspberrypi.org/arch_latest
默認帳號:Username: root Password: root
發布日期:2014-06-01
5.5 RISC OS
非Linux系統。
下載鏈接:http://downloads.raspberrypi.org/riscos_latest
默認帳號:無需
5.6 Raspbmc
下載鏈接:http://downloads.raspberrypi.org/raspbmc_latest
多媒體中心、DIY電視盒專用系統。將媒體中心軟體XBMC與Raspbian系統結合的衍生系統之一。中文支持良好,建議使用。
默認帳號:Username: pi Password: raspberry
5.7 XBian
下載鏈接:XBian_1.0_Beta_1.1.7z
與Raspbmc一樣,是Raspbian+XBMC的媒體中心。注重性能優化。(存在中文文件名亂碼問題)
默認帳號:Username: root Password: raspberry
5.8 RetroPie
下載鏈接:RetroPieImage_v1.7.zip
這是一個基於Raspbian構建的家用機模擬器系統,內置了FC、SFC、GB、GBA、DOS等游戲平台的模擬器軟體,可以將樹莓派快速配置成多功能老游戲主機。
默認帳號:Username: pi Password: raspberry
5.9 FreeBSD
下載鏈接:freebsd-pi-r245446.img.gz
BSD系列。
默認帳號:Username: pi Password: freebsdarm
5.10 Kali Linux
下載鏈接:Kali Linux
Kali Linux。
5.11 Ubuntu MATE for the Raspberry Pi 2
下載鏈接:Ubuntu MATE for the Raspberry Pi 2
Ubuntu MATE是桌面Linux發行,其宗旨是通過MATE這個經典、傳統的桌面環境來提供Ubuntu操作系統的簡介和典雅。MATE是GNOME 2桌面環境的繼續,曾經作為Ubuntu的預設桌面,直到10.10版中被Unity所取代。
Ubuntu MATE適合樹莓派新手使用,界面是最好看的,但是在CPU優化方面不如官方的系統做得好。
5.12 Snappy Ubuntu Core
下載鏈接:Snappy Ubuntu Core
非官方系統 Snappy Ubuntu Core。
5.13 Windows 10 IoT(物聯網版)
RTM版下載:Download RTM Release for Raspberry Pi 2
預覽版下載:Download Insider Preview for Raspberry Pi 2
微軟在Build 2015大會上宣布推出一個獨立的Windows 10開發者預覽版, 這個版本名稱是Windows 10 IoT Core Insider Preview(Windows 10物聯網核心內幕預覽版),現在可供開發人員下載和研究,它支持樹莓派2和英特爾Minnowboard MAX設備,使設備製造商能夠充分利用這些產品有限的硬體資源。
據微軟表示,Windows 10 IoT Core Insider Preview為設備製造商提供了世界一流的開發工具,通用Windows平台的力量,直接訪問硬體的能力,並能在樹莓派2等硬體設備上進行遠程調試,更新和管理軟體。
5.14 PiNet
安裝介紹鏈接:PiNet
PiNet 是一個自由和開放源碼的項目,為幫助學校建立和管理一個Raspberry Pi的課堂。
其主要特點包括
基於網路的用戶帳戶
基於網路的操作系統-所有樹莓PIS啟動一個主Raspbian操作系統。
共享文件夾-易於使用共享文件夾系統的教師和學生。
工作收集系統簡單的工作收集和提交系統,讓學生在工作。
自動備份-自動備份所有學生的工作,定期向外部驅動器。
多個小的功能,如批量用戶導入,課堂管理軟體集成等
伺服器軟體安裝在運行Ubuntu Linux 14.04計算機(這也完全是免費的)。你必須再連接伺服器和覆盆子PIS通過有線網路。
5.15 CentOS 7 ARM for the Raspberry Pi 2
下載鏈接:CentOS 7 ARM
面向ARM硬體架構的 CentOS 7 Linux。包含各種各樣的新特性、以及軟體更新與增強,比如面向身份認證管理的Kerberos HTTP代理、OpenJDK7中TLS連接的ECC支持、網路堆棧改進、以及Atomic包的更新等。
默認帳號:Username: root Password: centos

㈤ 錯誤: 找不到或無法載入主類 Djava.library.path=.usr.hadoop.hadoop-2.8.0.lib:.

最近,打算Hbase建表用snappy壓縮時,碰到一些Hadoop本地庫的問題。其實這些問題是一直存在的,只是不影響正常使用,就沒有引起重視。這次希望徹底解決以下問題:
問題一:執行start-dfs.sh時出現以下日誌
xxxx: Java HotSpot(TM) 64-Bit Server VM warning: You have loaded library /usr/local/hadoop-2.4.0/lib/native/libhadoop.so which might have disabled stack guard. The VM will try to fix the stack guard now.
xxxx: It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
這是因為官網提供的版本本地庫是32位的,在64位主機環境下無法執行。需要下載hadoop源碼進行編譯(如何編譯源碼可以上網搜索),編譯成功後,找到native下的文件拷貝到${HADOOP_HOME}/lib/native目錄下即可。
問題二:執行start-dfs.sh時出現以下日誌
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
在網上找到的所有文章中,都是說在hadoop-env.sh中加入以下兩行配置:
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native
export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/"
但是在測試過程中,加入以上配置還是會提示告警信息,說明本地庫未載入成功。
開啟debug:
export HADOOP_ROOT_LOGGER=DEBUG,console
執行start-dfs.sh,發現以下日誌:
DEBUG util.NativeCodeLoader: Failed to load native-hadoop with error: Java.lang.UnsatisfiedLinkError: no hadoop in java.library.path
從日誌中可以看出hadoop庫不在java.library.path所配置的目錄下,應該是java.library.path配置的路徑有問題。在hadoop-env.sh中重新配置:
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native
export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native/"
執行start-dfs.sh,告警信息不再顯示。經測試,其實只需export HADOOP_OPTS即可解決問題。
驗證本地庫是否載入成功:hadoop checknative
15/08/18 10:31:17 INFO bzip2.Bzip2Factory: Successfully loaded & initialized native-bzip2 library system-native
15/08/18 10:31:17 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library
Native library checking:
hadoop: true /usr/local/hadoop-2.4.0/lib/native/libhadoop.so.1.0.0
zlib: true /lib64/libz.so.1
snappy: true /usr/local/hadoop-2.4.0/lib/native/Linux-amd64-64/libsnappy.so.1
lz4: true revision:99
bzip2: true /lib64/libbz2.so.1
以上說明本地庫已經載入成功。

熱點內容
oppoa57忘記密碼怎麼刷機 發布:2025-02-07 01:51:17 瀏覽:73
2016空間加密怎麼進 發布:2025-02-07 01:41:30 瀏覽:382
網路數據伺服器是什麼 發布:2025-02-07 01:23:42 瀏覽:473
多伺服器ip白名單 發布:2025-02-07 01:23:41 瀏覽:372
優酷上傳視頻的格式 發布:2025-02-07 01:18:51 瀏覽:880
租虛擬伺服器有什麼用 發布:2025-02-07 01:17:55 瀏覽:4
視頻腳本策劃 發布:2025-02-07 01:15:37 瀏覽:566
外文免費資料庫 發布:2025-02-07 01:12:26 瀏覽:194
第一滴血ftp 發布:2025-02-07 01:12:24 瀏覽:424
仿草料源碼 發布:2025-02-07 01:08:31 瀏覽:532