1. 程式人生 > >hadoop支援lzo完整過程

hadoop支援lzo完整過程

簡介

  • 啟用lzo

啟用lzo的壓縮方式對於小規模叢集是很有用處,壓縮比率大概能降到原始日誌大小的1/3。同時解壓縮的速度也比較快。

  • 安裝lzo

lzo並不是linux系統原生支援,所以需要下載安裝軟體包。這裡至少需要安裝3個軟體包:lzo, lzop, hadoop-gpl-packaging。

  • 增加索引

gpl-packaging的作用主要是對壓縮的lzo檔案建立索引,否則的話,無論壓縮檔案是否大於hdfs的block大小,都只會按照預設啟動2個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包之後,會在/usr/local/hadoop/lzo/生成一些檔案。 將/usr/local/hadoop/lzo目錄下的所有檔案打包,並同步到叢集中的所有機器上。 在編譯lzo包的時候,需要一些環境,可以用下面的命令安裝好lzo編譯環境 [root@localhost ~]# yum -y install lzo-devel zlib-devel gcc autoconf automake libtool

安裝hadoop-lzo

    這裡下載的是Twitter hadoop-lzo,可以用Maven(如何安裝Maven請參照本部落格的《Linux命令列下安裝Maven與配置》)進行編譯。

[
[email protected]
~]# wget https://github.com/twitter/hadoop-lzo/archive/master.zip 下載後的檔名是master,它是一個zip格式的壓縮包,可以進行解壓: [[email protected] ~]# unzip master 解壓後的資料夾名為hadoop-lzo-master 當然,如果你電腦安裝了git,你也可以用下面的命令去下載 [[email protected] ~]# 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: <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> 然後進入hadoop-lzo-master目錄,依次執行下面的命令 [[email protected] ~]# export CFLAGS=-m64 [[email protected] ~]# export CXXFLAGS=-m64 [[email protected] ~]# export C_INCLUDE_PATH=/usr/local/hadoop/lzo/include [[email protected] ~]# export LIBRARY_PATH=/usr/local/hadoop/lzo/lib [[email protected] ~]# mvn clean package -Dmaven.test.skip=true [[email protected] ~]# cd target/native/Linux-amd64-64 [[email protected] ~]# tar -cBf - -C lib . | tar -xBvf - -C ~ [[email protected] ~]# cp ~/libgplcompression* $HADOOP_HOME/lib/native/ [[email protected] ~]# cp target/hadoop-lzo-0.4.18-SNAPSHOT.jar $HADOOP_HOME/share/hadoop/common/ 其實在tar -cBf – -C lib . | tar -xBvf – -C ~命令之後,會在~目錄下生成一下幾個檔案: [[email protected] ~]# ls -l 1-rw-r--r-- 1 libgplcompression.a 2-rw-r--r-- 1 libgplcompression.la 3lrwxrwxrwx 1 libgplcompression.so -> libgplcompression.so.0.0.0 4lrwxrwxrwx 1 libgplcompression.so.0 -> libgplcompression.so.0.0.0 5-rwxr-xr-x 1 libgplcompression.so.0.0.0 其中libgplcompression.so和libgplcompression.so.0是連結檔案,指向libgplcompression.so.0.0.0,將剛剛生成的libgplcompression*和target/hadoop-lzo-0.4.18-SNAPSHOT.jar同步到叢集中的所有機器對應的目錄。

配置hadoop環境變數

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>

將剛剛修改的配置檔案全部同步到叢集的所有機器上,並重啟Hadoop叢集,這樣就可以在Hadoop中使用lzo。

驗證lzo(通過hive測試)

建立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";

匯入資料

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.lzo

索引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. 單個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.LzoIndexer
/user/hive/warehouse/lzo/20151228/lzo_test_20151228.lzo

利用hive執行mr任務

set hive.exec.reducers.max=10;
set mapred.reduce.tasks=10;
select ip,rt from nginx_lzo limit 10;
在hive的控制檯能看到類似如下格式輸出,就表示正確了!
hive> set hive.exec.reducers.max=10;
hive> set mapred.reduce.tasks=10;
hive> select ip,rt from lzo limit 10;
Total MapReduce jobs = 1
Launching Job 1 out of 1
Number 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: 0
2013-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 sec
2013-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)

修改使用中hive表的輸入輸出格式

ALTER TABLE lzo SET FILEFORMAT 
INPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat' 
OUTPUTFORMAT "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat" 
SERDE "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe";

相關推薦

hadoop支援lzo完整過程

簡介 啟用lzo 啟用lzo的壓縮方式對於小規模叢集是很有用處,壓縮比率大概能降到原始日誌大小的1/3。同時解壓縮的速度也比較快。 安裝lzo lzo並不是linux系統原生支援,所以需要下載安裝軟體包。這裡至少需要安裝3

vmware搭建hadoop集群完整過程筆記

器) 修改文件權限 配置環境 chmod 出現問題 2.6.0 img key文件 無權限 搭建hadoop集群完整過程筆記 一、虛擬機和操作系統   環境:ubuntu14+hadoop2.6+jdk1.8   虛擬機:vmware12 二、安裝步驟: 先在一臺機器上

Hadoop支援Lzo壓縮

1.前置要求 編譯安裝好hadoop java & maven 安裝配置好 安裝前置庫 yum -y install lzo-devel zlib-devel gcc autoconf automake libtool 2.安裝

Hadoop完全分布式安裝配置完整過程

其他 ins $path serve 建立 工作 isp IT 完成後 一. 硬件、軟件準備 1. 硬件設備 為了方便學習Hadoop,我采用了雲服務器來配置Hadoop集群。集群使用三個節點,一個阿裏雲節點、一個騰訊雲節點、一個華為雲節點,其中阿裏雲和騰訊雲都是通過使用

搭建hadoop+Hbase+Zookeeper偽分散式完整過程

安裝前準備:centos7   linux jdk1.8  hadoop ,Hbase ,zookeeper 發現ens33 沒有inet 這個屬性,那麼就沒法通過IP地址連線虛擬機器。 接著來檢視ens33網絡卡的配置:vi /etc/sysconfig/network

Hadoop之mapreduce程式完整過程解析

今天在思考mapreduce程式執行的過程時,發現對這塊有點亂,所以總結一下,hadoop下執行mapreduce程式的詳細過程··· ··· 首先在執行一個mapreduce程式時,必須啟動相應的服務,也就是各個節點: 1.Hadoop中hdfs的兩個節點:NameNode、DataNod

立個flag——記錄配置Hadoop+Zookeeper+HBase的完整過程(一)

背景: 這學期選修了 ‘大資料管理技術’ 這門課程,現在是第10周,然而,虛擬機器打不開了,試了各種方法也無法進入圖形介面,更悲催的是,沒有儲存配置完畢的映象!!!也就是說,我花了大半學期配置的Had

Hadoop編譯完整過程

前言在編譯Hadoop的過程中,用老版本的軟體會造成很多不必要的問題,用最新的穩定版本是最好的選擇。hadoop編譯環境:在下載完hadoop(最好下載最新版本)後,進入hadoop的目錄開啟BUILDING.txt,可以看到hadoop所依賴的軟體列表,按照我們在前言中的觀

機器學習完整過程案例分布解析,python代碼解析

然而 表示 離散 好的 了解 成了 傳感器 att and 所謂學習問題,是指觀察由n個樣本組成的集合,並依據這些數據來預測未知數據的性質。 學習任務(一個二分類問題): 區分一個普通的互聯網檢索Query是否具有某個垂直領域的意圖。如果如今有一個O2O領域的垂直

基於nginx+keepalived架構實現的完整過程

安裝 nginx 負載均衡器 nginx+keepalived 監控Nginx 安裝1.安裝PCRE軟件包tar zxvf pcre-8.10.tar.gzcd pcre-8.10./configuremake && make install2.安裝Nginx軟件包tar zxvf nginx

Eclipse 中構建 Maven 項目的完整過程

部署 完整 ott ges jdk img class ati 技術分享 進行以下步驟的前提是你已經安裝好本地maven庫和eclipse中的maven插件了(有的eclipse中已經集成了maven插件) 一、Maven項目的新建 1、鼠標右鍵---->New---

Oracle學習筆記_05_ 一個創建表空間、創建用戶、授權的完整過程

查看 ref tab 學習 linu word 切換 temp voice 一、完整命令 su - oracle sqlplus /nolog conn /as sysdba create tablespace scaninvoice logging

一大波可視化網頁采集完整過程記錄 新手也能一看就會

心得這幾年工作中經常用到各種各樣的網頁爬蟲,過年期間整理了一下,把一些比較實用的采集過程貼成動態GIF圖片小視頻,供以後自己使用。也希望方便到大家。這裏以八爪魚為演示,沒接觸過可視化網頁采集的話,不妨跟著動圖動手做一做,理解起來更容易些。下面都是些耗時在1~2分鐘左右的演示,包括完整的規則配置過程、實時運行效

hadoop安裝、使用過程的異常匯總

ces quest IE sign jdk1 ice UC -s cer 2017年06月06日 17:27:39 閱讀數:711 1、 啟動yarn,resourceManger啟動失敗,日誌報錯: org.apache.hadoop.yarn.exce

網絡中兩臺主機通信的完整過程

nbsp -i 端口 tom span 目標 star com ims 主機A和主機B通信報文的轉發過程 1、主機A和主機B在同一個二層網絡中,直接走二層交換 主機A查看自己的ARP緩存,檢查是否有主機B的IP到MAC的映射,如果有映射,構造報文,目的

Centos7配置ThinkPHP5.0完整過程(二)

命名 entos 訪問 uid log 內容 -m lan ima 接上篇《Centos7配置ThinkPHP5.0完整過程(一)》,開始配置PHP環境 安裝php sudo yum install php -y   安裝擴展程序 sudo yum install

基於AKKA HTTP構建查詢HBase的RESTful API完整過程

如果還不清楚akka http的使用,可參看 使用scala基於AKKA HTTP開發REST介面的簡單例項,工程目錄結構如下: 整個處理過程:客戶端傳送get或者post請求->服務端處理->結果返回客戶端(以json字串方式返回),這裡的客戶端測試工具採用的是

記錄自己用python搭建個人部落格系統的完整過程(一)

零、前言 本博文記錄搭建個人部落格系統的完整過程,網上有許多相關的教程,但是沒找到一個(適合自己能力的)快速搭建的完整教程。藉此篇博文梳理一下前不久學習到的有關整個過程前前後後的各種知識點。 一、搭建環境 採用架構:python3.6 + django1.10 + ngi

Hadoop Mapreduce的shuffle過程詳解

1、map task讀取資料時預設呼叫TextInputFormat的成員RecoreReader,RecoreReader呼叫自己的read()方法,進行逐行讀取,返回一個key、value; 2、返回的key、value交給自定義的map方法,輸出的context.write(key,value),再交

小程式登入——PHP後臺處理資料庫的完整過程以及程式碼

    注:這裡用到的是本地測試,所以後面的URL網址並沒有使用https。       你需要做的幾件小事: 頁面 php mysql      關於頁面,直接貼程式碼。具體自