溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

hadoop中怎么部署lzo

發(fā)布時(shí)間:2021-12-10 14:02:12 來源:億速云 閱讀:138 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要講解了“hadoop中怎么部署lzo”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“hadoop中怎么部署lzo”吧!

    簡(jiǎn)介

    • 啟用lzo

    啟用lzo的壓縮方式對(duì)于小規(guī)模集群是很有用處,壓縮比率大概能降到原始日志大小的1/3。同時(shí)解壓縮的速度也比較快。

    • 安裝lzo

    lzo并不是linux系統(tǒng)原生支持,所以需要下載安裝軟件包。這里至少需要安裝3個(gè)軟件包:lzo, lzop, hadoop-gpl-packaging。

    • 增加索引

    gpl-packaging的作用主要是對(duì)壓縮的lzo文件創(chuàng)建索引,否則的話,無論壓縮文件是否大于hdfs的block大小,都只會(huì)按照默認(rèn)啟動(dòng)2個(gè)map操作。

    部署

    安裝lzop native library

    [root@localhost ~]#  wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gz[root@localhost ~]#  tar -zxvf lzo-2.06.tar.gz[root@localhost ~]#  cd lzo-2.06[root@localhost ~]#  export CFLAGS=-m64[root@localhost ~]#  ./configure -enable-shared -prefix=/usr/local/hadoop/lzo/[root@localhost ~]# make && sudo make install編譯完lzo包之后,會(huì)在/usr/local/hadoop/lzo/生成一些文件。
    將/usr/local/hadoop/lzo目錄下的所有文件打包,并同步到集群中的所有機(jī)器上。
    在編譯lzo包的時(shí)候,需要一些環(huán)境,可以用下面的命令安裝好lzo編譯環(huán)境
    [root@localhost ~]#  yum -y install  lzo-devel  zlib-devel  gcc autoconf automake libtool1234567891011121314151617181912345678910111213141516171819

    安裝hadoop-lzo

        這里下載的是Twitter hadoop-lzo,可以用Maven(如何安裝Maven請(qǐng)參照本博客的《Linux命令行下安裝Maven與配置》)進(jìn)行編譯。
    [root@localhost ~]#  wget https://github.com/twitter/hadoop-lzo/archive/master.zip下載后的文件名是master,它是一個(gè)zip格式的壓縮包,可以進(jìn)行解壓:
    [root@localhost ~]#  unzip master解壓后的文件夾名為hadoop-lzo-master
    當(dāng)然,如果你電腦安裝了git,你也可以用下面的命令去下載
    [root@localhost ~]#  git clone https://github.com/twitter/hadoop-lzo.githadoop-lzo中的pom.xml依賴了hadoop2.1.0-beta,由于我們這里用到的是Hadoop 2.2.0,所以建議將hadoop版本修改為2.2.0:
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <hadoop.current.version>2.2.0</hadoop.current.version>
        <hadoop.old.version>1.0.4</hadoop.old.version>
    </properties>
    然后進(jìn)入hadoop-lzo-master目錄,依次執(zhí)行下面的命令
    [root@localhost ~]# export CFLAGS=-m64[root@localhost ~]# export CXXFLAGS=-m64[root@localhost ~]# export C_INCLUDE_PATH=/usr/local/hadoop/lzo/include[root@localhost ~]# export LIBRARY_PATH=/usr/local/hadoop/lzo/lib[root@localhost ~]# mvn clean package -Dmaven.test.skip=true[root@localhost ~]# cd target/native/Linux-amd64-64[root@localhost ~]# tar -cBf - -C lib . | tar -xBvf - -C ~[root@localhost ~]# cp ~/libgplcompression* $HADOOP_HOME/lib/native/[root@localhost ~]# cp target/hadoop-lzo-0.4.18-SNAPSHOT.jar $HADOOP_HOME/share/hadoop/common/其實(shí)在tar -cBf – -C lib . | tar -xBvf – -C ~命令之后,會(huì)在~目錄下生成一下幾個(gè)文件:
    [root@localhost ~]# ls -l1-rw-r--r--  1 libgplcompression.a2-rw-r--r--  1 libgplcompression.la3lrwxrwxrwx  1 libgplcompression.so -> libgplcompression.so.0.0.04lrwxrwxrwx  1 libgplcompression.so.0 -> libgplcompression.so.0.0.05-rwxr-xr-x  1 libgplcompression.so.0.0.0其中l(wèi)ibgplcompression.so和libgplcompression.so.0是鏈接文件,指向libgplcompression.so.0.0.0,將剛剛生成的libgplcompression*和target/hadoop-lzo-0.4.18-SNAPSHOT.jar同步到集群中的所有機(jī)器對(duì)應(yīng)的目錄。1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515212345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152

    配置hadoop環(huán)境變量

    1、在Hadoop中的$HADOOP_HOME/etc/hadoop/hadoop-env.sh加上下面配置:
    export LD_LIBRARY_PATH=/usr/local/hadoop/lzo/lib
    2、在$HADOOP_HOME/etc/hadoop/core-site.xml加上如下配置:<property>
        <name>io.compression.codecs</name>
        <value>org.apache.hadoop.io.compress.GzipCodec,
               org.apache.hadoop.io.compress.DefaultCodec,
               com.hadoop.compression.lzo.LzoCodec,
               com.hadoop.compression.lzo.LzopCodec,
               org.apache.hadoop.io.compress.BZip2Codec        </value></property><property>
        <name>io.compression.codec.lzo.class</name>
        <value>com.hadoop.compression.lzo.LzoCodec</value></property>3、在$HADOOP_HOME/etc/hadoop/mapred-site.xml加上如下配置<property>
        <name>mapred.compress.map.output</name>
        <value>true</value></property><property>
        <name>mapred.map.output.compression.codec</name>
        <value>com.hadoop.compression.lzo.LzoCodec</value></property><property>
        <name>mapred.child.env</name>
        <value>LD_LIBRARY_PATH=/usr/local/hadoop/lzo/lib</value></property>將剛剛修改的配置文件全部同步到集群的所有機(jī)器上,并重啟Hadoop集群,這樣就可以在Hadoop中使用lzo。123456789101112131415161718192021222324252627282930313233343536123456789101112131415161718192021222324252627282930313233343536

    驗(yàn)證lzo(通過hive測(cè)試)

    創(chuàng)建lzo表

    CREATE TABLE lzo (
    ip STRING,user STRING,time STRING,
    request STRING,
    status STRING,size STRING,
    rt STRING,
    referer STRING,
    agent STRING,
    forwarded String
    )
    partitioned by (date string,
    host string
    )row format delimited
    fields terminated by '\t'STORED AS INPUTFORMAT "com.hadoop.mapred.DeprecatedLzoTextInputFormat"OUTPUTFORMAT "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat";12345678910111213141516171819201234567891011121314151617181920

    導(dǎo)入數(shù)據(jù)

    LOAD DATA Local INPATH '/home/hadoop/data/access_20151230_25.log.lzo' INTO TABLE lzo PARTITION(date=20151229,host=25);/home/hadoop/data/access_20151219.log文件的格式如下:xxx.xxx.xx.xxx  -       [23/Dec/2015:23:22:38 +0800]    "GET /ClientGetResourceDetail.action?id=318880&token=Ocm HTTP/1.1"   200     199     0.008   "xxx.com"        "Android4.1.2/LENOVO/Lenovo A706/ch_lenovo/80"   "-"直接采用lzop  /home/hadoop/data/access_20151219.log即可生成lzo格式壓縮文件/home/hadoop/data/access_20151219.log.lzo1234512345

    索引LZO文件

      1. 批量lzo文件修改
    $HADOOP_HOME/bin/hadoop jar 
    /home/hadoop/hadoop-2.2.0/share/hadoop/common/hadoop-lzo-0.4.20-SNAPSHOT.jar com.hadoop.compression.lzo.DistributedLzoIndexer /user/hive/warehouse/lzo  2. 單個(gè)lzo文件修改
    $HADOOP_HOME/bin/hadoop jar 
    /home/hadoop/hadoop-2.2.0/share/hadoop/common/hadoop-lzo-0.4.20-SNAPSHOT.jarcom.hadoop.compression.lzo.LzoIndexer/user/hive/warehouse/lzo/20151228/lzo_test_20151228.lzo1234567891011121312345678910111213

    利用hive執(zhí)行mr任務(wù)

    set hive.exec.reducers.max=10;
    set mapred.reduce.tasks=10;select ip,rt from nginx_lzo limit 10;
    在hive的控制臺(tái)能看到類似如下格式輸出,就表示正確了!
    hive> set hive.exec.reducers.max=10;
    hive> set mapred.reduce.tasks=10;
    hive> select ip,rt from lzo limit 10;
    Total MapReduce jobs = 1Launching Job 1 out of 1Number of reduce tasks is set to 0 since there's no reduce operator
    Starting Job = job_1388065803340_0009, Tracking URL = http://mycluster:8088/proxy/application_1388065803340_0009/
    Kill Command = /home/hadoop/hadoop-2.2.0/bin/hadoop job -kill job_1388065803340_0009
    Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 02013-12-27 09:13:39,163 Stage-1 map = 0%, reduce = 0%2013-12-27 09:13:45,343 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 1.22 sec2013-12-27 09:13:46,369 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 1.22 sec
    MapReduce Total cumulative CPU time: 1 seconds 220 msec
    Ended Job = job_1388065803340_0009
    MapReduce Jobs Launched:
    Job 0: Map: 1 Cumulative CPU: 1.22 sec HDFS Read: 63570 HDFS Write: 315 SUCCESS
    Total MapReduce CPU Time Spent: 1 seconds 220 msec
    OK
    xxx.xxx.xx.xxx "XXX.com"Time taken: 17.498 seconds, Fetched: 10 row(s)123456789101112131415161718192021222324123456789101112131415161718192021222324

感謝各位的閱讀,以上就是“hadoop中怎么部署lzo”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)hadoop中怎么部署lzo這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI