生活随笔
收集整理的這篇文章主要介紹了
Hadoop 2.2.0安装和配置lzo
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
Hadoop經(jīng)常用于處理大量的數(shù)據(jù),如果期間的輸出數(shù)據(jù)、中間數(shù)據(jù)能壓縮存儲(chǔ),對(duì)系統(tǒng)的I/O性能會(huì)有提升。綜合考慮壓縮、解壓速度、是否支持split,目前l(fā)zo是最好的選擇。LZO(LZO是Lempel-Ziv-Oberhumer的縮寫)是一種高壓縮比和解壓速度極快的編碼,它的特點(diǎn)是解壓縮速度非常快,無(wú)損壓縮,壓縮后的數(shù)據(jù)能準(zhǔn)確還原,lzo是基于block分塊的,允許數(shù)據(jù)被分解成chunk,能夠被并行的解壓。LZO庫(kù)實(shí)現(xiàn)了許多有下述特點(diǎn)的算法:
(1)、解壓簡(jiǎn)單,速度非常快。
(2)、解壓不需要內(nèi)存。
(3)、壓縮相當(dāng)?shù)乜臁?br /> (4)、壓縮需要64 kB的內(nèi)存。
(5)、允許在壓縮部分以損失壓縮速度為代價(jià)提高壓縮率,解壓速度不會(huì)降低。
(6)、包括生成預(yù)先壓縮數(shù)據(jù)的壓縮級(jí)別,這樣可以得到相當(dāng)有競(jìng)爭(zhēng)力的壓縮比。
(7)、另外還有一個(gè)只需要8 kB內(nèi)存的壓縮級(jí)別。
(8)、算法是線程安全的。
(9)、算法是無(wú)損的。
本文針對(duì)Hadoop 2.2.0,介紹如何安裝和使用lzo。
一、下載、解壓并編譯lzo包
| 1 | [wyp@master ~]$ wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gz |
| 2 | [wyp@master ~]$ tar -zxvf lzo-2.06.tar.gz |
| 3 | [wyp@master ~]$ cd lzo-2.06 |
| 4 | [wyp@master ~]$ export CFLAGS=-m64 |
| 5 | [wyp@master ~]$ ./configure -enable-shared -prefix=/usr/local/hadoop/lzo/ |
| 6 | [wyp@master ~]$ make && sudo make install |
編譯完lzo包之后,會(huì)在/usr/local/hadoop/lzo/生成一些文件,目錄結(jié)構(gòu)如下:
| 1 | [wyp@master /usr/local/hadoop/lzo]$ ls -l |
| 3 | drwxr-xr-x 3 root root 4096 Mar 21 17:23 include |
| 4 | drwxr-xr-x 2 root root 4096 Mar 21 17:23 lib |
| 5 | drwxr-xr-x 3 root root 4096 Mar 21 17:23 share |
將/usr/local/hadoop/lzo目錄下的所有文件打包,并同步到集群中的所有機(jī)器上。
在編譯lzo包的時(shí)候,需要一些環(huán)境,可以用下面的命令安裝好lzo編譯環(huán)境
| 1 | [wyp@master ~]$ yum -y install? lzo-devel???? \ |
| 2 | ???????????????zlib-devel? gcc autoconf automake libtool |
二、安裝Hadoop-LZO
這里下載的是Twitter hadoop-lzo,可以用Maven(如何安裝Maven請(qǐng)參照本博客的《Linux命令行下安裝Maven與配置》)進(jìn)行編譯。
| 1 | [wyp@master ~]$ wget https://github.com/twitter/hadoop-lzo/archive/master.zip |
下載后的文件名是master,它是一個(gè)zip格式的壓縮包,可以進(jìn)行解壓:
| 1 | [wyp@master ~]$ unzip master |
解壓后的文件夾名為hadoop-lzo-master
當(dāng)然,如果你電腦安裝了git,你也可以用下面的命令去下載
| 1 | [wyp@master ~]$ git clone https://github.com/twitter/hadoop-lzo.git |
hadoop-lzo中的pom.xml依賴了hadoop2.1.0-beta,由于我們這里用到的是Hadoop 2.2.0,所以建議將hadoop版本修改為2.2.0:
| 2 | ????<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
| 3 | ????<hadoop.current.version>2.2.0</hadoop.current.version> |
| 4 | ????<hadoop.old.version>1.0.4</hadoop.old.version> |
然后進(jìn)入hadoop-lzo-master目錄,依次執(zhí)行下面的命令
| 01 | [wyp@master hadoop-lzo-master]$ export CFLAGS=-m64 |
| 02 | [wyp@master hadoop-lzo-master]$ export CXXFLAGS=-m64 |
| 03 | [wyp@master hadoop-lzo-master]$ export C_INCLUDE_PATH=???? \ |
| 04 | ??????????????????????????????????/usr/local/hadoop/lzo/include |
| 05 | [wyp@master hadoop-lzo-master]$ export LIBRARY_PATH=/usr/local/hadoop/lzo/lib |
| 06 | [wyp@master hadoop-lzo-master]$ mvn clean package -Dmaven.test.skip=true |
| 07 | [wyp@master hadoop-lzo-master]$ cd target/native/Linux-amd64-64 |
| 08 | [wyp@master Linux-amd64-64]$ tar -cBf - -C lib . | tar -xBvf - -C ~ |
| 09 | [wyp@master ~]$cp ~/libgplcompression* $HADOOP_HOME/lib/native/ |
| 10 | [wyp@master hadoop-lzo-master]$cp target/hadoop-lzo-0.4.18-SNAPSHOT.jar?? \ |
| 11 | ???????????????????????????????????$HADOOP_HOME/share/hadoop/common/ |
其實(shí)在tar -cBf – -C lib . | tar -xBvf – -C ~命令之后,會(huì)在~目錄下生成一下幾個(gè)文件:
| 2 | -rw-r--r--? 1 libgplcompression.a |
| 3 | -rw-r--r--? 1 libgplcompression.la |
| 4 | lrwxrwxrwx? 1 libgplcompression.so -> libgplcompression.so.0.0.0 |
| 5 | lrwxrwxrwx? 1 libgplcompression.so.0 -> libgplcompression.so.0.0.0 |
| 6 | -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)的目錄。
三、配置Hadoop環(huán)境變量
1、在Hadoop中的$HADOOP_HOME/etc/hadoop/hadoop-env.sh加上下面配置:
| 1 | export LD_LIBRARY_PATH=/usr/local/hadoop/lzo/lib |
2、在$HADOOP_HOME/etc/hadoop/core-site.xml加上如下配置:
| 02 | ????<name>io.compression.codecs</name> |
| 03 | ????<value>org.apache.hadoop.io.compress.GzipCodec, |
| 04 | ???????????org.apache.hadoop.io.compress.DefaultCodec, |
| 05 | ???????????com.hadoop.compression.lzo.LzoCodec, |
| 06 | ???????????com.hadoop.compression.lzo.LzopCodec, |
| 07 | ???????????org.apache.hadoop.io.compress.BZip2Codec |
| 12 | ????<name>io.compression.codec.lzo.class</name> |
| 13 | ????<value>com.hadoop.compression.lzo.LzoCodec</value> |
3、在$HADOOP_HOME/etc/hadoop/mapred-site.xml加上如下配置
| 02 | ????<name>mapred.compress.map.output</name> |
| 03 | ????<value>true</value> |
| 07 | ????<name>mapred.map.output.compression.codec</name> |
| 08 | ????<value>com.hadoop.compression.lzo.LzoCodec</value> |
| 12 | ????<name>mapred.child.env</name> |
| 13 | ????<value>LD_LIBRARY_PATH=/usr/local/hadoop/lzo/lib</value> |
將剛剛修改的配置文件全部同步到集群的所有機(jī)器上,并重啟Hadoop集群,這樣就可以在Hadoop中使用lzo。
四、如何使用
這里在Hive中使用一下lzo,在hive中創(chuàng)建一個(gè)lzo表:
| 4 | ????> STORED AS INPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat' |
| 5 | ????> OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'; |
| 7 | Time taken: 3.423 seconds |
如果在創(chuàng)建lzo表出現(xiàn)了如下錯(cuò)誤:
| 1 | FAILED: Error in metadata: Class not found:???? \ |
| 2 | ??????????????????com.hadoop.mapred.DeprecatedLzoTextInputFormat |
| 3 | FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask |
請(qǐng)檢查你的環(huán)境是否配置好。
然后在本地用lzo壓縮一個(gè)文件,先看看users.txt的內(nèi)容:
| 01 | [wyp@master ~]$ cat users.txt |
| 16 | [wyp@master ~]$ lzop users.txt |
| 17 | [wyp@master ~]$ ls -l users.txt* |
| 18 | -rw-r--r-- 1 wyp wyp 97? Mar 25 15:40 users.txt |
| 19 | -rw-r--r-- 1 wyp wyp 154 Mar 25 15:40 users.txt.lzo |
將users.txt.lzo的數(shù)據(jù)導(dǎo)入到lzo表里面:
| 01 | hive> load data local inpath '/home/wyp/users.txt.lzo' into table lzo; |
| 02 | Copying data from file:/home/wyp/users.txt.lzo |
| 03 | Copying file: file:/home/wyp/users.txt.lzo |
| 04 | Loading data to table default.lzo |
| 05 | Table default.lzo stats: [num_partitions: 0, num_files: 1, |
| 06 | ???????????????num_rows: 0, total_size: 154, raw_data_size: 0] |
| 08 | Time taken: 0.49 seconds |
| 09 | hive> select * from lzo; |
| 25 | Time taken: 0.244 seconds, Fetched: 14 row(s) |
好了,我們可以在Hadoop中使用lzo了!!(完)
轉(zhuǎn)載于:https://my.oschina.net/u/1169079/blog/225070
總結(jié)
以上是生活随笔為你收集整理的Hadoop 2.2.0安装和配置lzo的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。