日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

libhdfs編譯,安裝,配置,使用

系統(tǒng) 1859 0

我是把hadoop 0.20.2安裝到/opt/hadoop目錄下,故 HADOOP_HOME=/opt/hadoop

而我系統(tǒng)安裝的是openjdk-1.6.0,主目錄 JAVA_HOME= /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64

一、編譯

?

        $cd /opt/hadoop
        
$ant compile-c++-libhdfs -Dislibhdfs=true

?

?

二、安裝、配置

就是解決gcc尋找頭文件、連接動(dòng)態(tài)鏈接庫(kù)問(wèn)題以及環(huán)境變量。
其中g(shù)cc尋找頭文件以及動(dòng)態(tài)鏈接庫(kù)可以通過(guò)設(shè)置環(huán)境變量,也可以通過(guò)Makefile來(lái)完成。
而libhdfs需要用到的JAVA的相關(guān)東西只能通過(guò)環(huán)境變量設(shè)置。其實(shí)就是CLASSPATH需要必須通過(guò)環(huán)境變量來(lái)設(shè)置。

1)環(huán)境變量設(shè)置(CLASSPATH必須通過(guò)這個(gè)來(lái)設(shè)置,其它項(xiàng)可以通過(guò)Makefile完成)

GCC尋找頭文件方面需要用到的環(huán)境變量:
我這個(gè)版本libhdfs的頭文件hdfs.h在 $HADOOP_HOME/src/c++/libhdfs 下,而libhdfs是基于JNI的,所以JAVA的頭文件也在哪也要告訴GCC。
JAVA頭文件在$JAVA_HOME/include和$JAVA_HOME/include/linux下。
所以設(shè)置環(huán)境變量
      HADOOP_HOME=
      
        /opt/hadoop
      
      
JAVA_HOME= /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64

# 此項(xiàng)可以通過(guò)Makefile設(shè)置
C_INCLUDE_PATH= $HADOOP_HOME/src/c++/libhdfs:$JAVA_HOME/include:$JAVA_HOME/include/linux

?

?
其它環(huán)境變量:
在安裝JAVA的時(shí)候就要設(shè)置CLASSPATH變量,其值一般為
        CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
      
我們?cè)谶@基礎(chǔ)上,將$HADOOP_HOME/*.jar 以及 $HADOOP_HOME/lib/*.jar 全部添加到CLASSPATH環(huán)境變量中。雖然只是用到其中兩三個(gè)就行了,但我不知道到底是用哪個(gè)jar,所以就全部添加了。
?
具體環(huán)境變量的設(shè)置有兩種方法:

a)export設(shè)置立即生效,但只當(dāng)次有效。重啟機(jī)器需要重新設(shè)置環(huán)境變量。

        $export HADOOP_HOME=/opt/hadoop
      

其它環(huán)境變量設(shè)置參照上面命令。

?

b)修改/etc/profile設(shè)置環(huán)境變量。修改完并非立即生效,而是重啟機(jī)器后有效,而且以后都有效。

        $gedit /etc/profile


      

?在這個(gè)文件中找到一行

        export PATH MAIL USER ...
      

?在這行的前面添加

        JAVA_HOME=
        
          你的JAVA主目錄

HADOOP_HOME
        
        =
        
          你的HADOOP主目錄


          
        # 此項(xiàng)可以通過(guò)Makefile設(shè)置
        
          
C_INCLUDE_PATH
= 那些頭文件所在目錄,用冒號(hào):隔開(kāi) # 添加 $HADOOP_HOME /*.jar 到 CLASSPATH變量中 for i in $HADOOP_HOME/*.jar ; do   CLASSPATH=$CLASSPATH:$i done # 添加 $HADOOP_HOME/lib/*.jar 到 CLASSPATH變量中 for i in $HADOOP_HOME/lib/*.jar ; do   CLASSPATH=$CLASSPATH:$i done

?


?在這行的后面添加

        export PATH MAIL USER ... JAVA_HOME HADOOP_HOME C_INCLUDE_PATH


      

?注:其中...表示省略的變量,還有很多變量,各個(gè)系統(tǒng)不一樣,沒(méi)必須全面寫(xiě)在這里,而且不是重點(diǎn)。

?

2)動(dòng)態(tài)鏈接庫(kù)(可通過(guò)Makefile設(shè)置)

我這個(gè)版本JAVA的動(dòng)態(tài)鏈接庫(kù)在$JAVA_HOME/jre/lib/amd64目錄下
libhdfs的動(dòng)態(tài)鏈接庫(kù)在$HADOOP_HOME/build/c++/Linux-amd64-64/lib目錄下
在centos 6中設(shè)置動(dòng)態(tài)鏈接庫(kù)的方法為
在/etc/ld.so.conf.d/目錄下新建一個(gè).conf文件,然后在文件里填入鏈接庫(kù)所在目錄。
        $gedit /etc/ld.so.conf.d/hdfs.conf


      

在此文件中填入目錄

        /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64
        
/opt/hadoop/build/c++/Linux-amd64-64/lib

?保存,退出,然后執(zhí)行命令使配置文件生效

        $ldconfig


      

?

3)通過(guò)Makefile設(shè)置相關(guān)項(xiàng)

Makefile寫(xiě)法

        #指定hadoop安裝目錄
        
HADOOP_INSTALL=/opt/hadoop
#使用的平臺(tái)類(lèi)型,32位的是Linux-i386-32,64位的是Linux-amd64-64
PLATFORM
=Linux-i386- 32

#JAVA安裝目錄 JAVA_HOME
= /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64
        
          
#尋找頭文件的目錄
CPPFLAGS
= -I$(HADOOP_INSTALL)/src/c++/ libhdfs -I $(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux
#尋找動(dòng)態(tài)鏈接庫(kù)的目錄
LIB
= -L$(HADOOP_INSTALL)/c++/Linux-i386- 32 /lib/ libjvm =/usr/lib/jvm/java- 6 -openjdk/jre/lib/i386/client/ libjvm.so LDFLAGS += - lhdfs testHdfs: testHdfs.c gcc testHdfs.c $(CPPFLAGS) $(LIB) $(LDFLAGS) $(libjvm) - o testHdfs clean: rm testHdfs

?

Makefile.am的寫(xiě)法

        SUBDIRS=
        
          

HADOOP_INSTALL
        
        =/opt/hadoop
        
          

PLATFORM
        
        =Linux-amd64-
        
          64
        
        
          

JAVA_HOME
        
        =
        
          /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64
          
INCLUDES =-I$(HADOOP_INSTALL)/src/c++/libhdfs -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/ linux
LDADD
=-L$(HADOOP_INSTALL)/c++/$(PLATFORM)/ lib -lhdfs
export INCLUDES LDADD

?

?

?

三、使用

測(cè)試代碼

        /* testLibhdfs.c */
        

#include "hdfs.h" int main(int argc, char **argv) { hdfsFS fs = hdfsConnect("default", 0); const char* writePath = "/tmp/testfile.txt"; hdfsFile writeFile = hdfsOpenFile(fs, writePath, O_WRONLY|O_CREAT, 0, 0, 0); if(!writeFile) { fprintf(stderr, "Failed to open %s for writing!\n", writePath); exit(-1); } char* buffer = "Hello, World!"; tSize num_written_bytes = hdfsWrite(fs, writeFile, (void*)buffer, strlen(buffer)+1); if (hdfsFlush(fs, writeFile)) { fprintf(stderr, "Failed to 'flush' %s\n", writePath); exit(-1); } hdfsCloseFile(fs, writeFile); }

?編譯、運(yùn)行:

        $gcc -o testLibhdfs testLibhdfs.c -lhdfs
        
$./testLibhdfs



libhdfs編譯,安裝,配置,使用


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 临城县| 星座| 栾川县| 从化市| 秦安县| 莱阳市| 象州县| 攀枝花市| 商丘市| 方正县| 岫岩| 册亨县| 金乡县| 沙坪坝区| 湘潭县| 伊川县| 宁强县| 公安县| 上饶市| 宜良县| 彰武县| 天峨县| 石柱| 新津县| 昌江| 巴里| 青龙| 武威市| 财经| 仙桃市| 六枝特区| 永靖县| 山阳县| 自贡市| 内乡县| 保亭| 平原县| 磐石市| 都安| 内黄县| 霸州市|