Hadoop-之配置LZO压缩完整手册

2023-12-10 13:39

本文主要是介绍Hadoop-之配置LZO压缩完整手册,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Hadoop-之配置LZO压缩完整手册

1 前言

HADOOP本身除了GIP、DEFLATE、BZIP2等压缩之外是不支持LZO压缩的,所以我们加入需要让HDFS支持LZO(一种可切分的压缩形式,压缩率也很低)压缩,我们需要引入Twitter的Hadoop-LZO,参考地址为:https://github.com/twitter/hadoop-lzo/

2 hadoop-lzo的编译-构建与配置流程

2.1 环境准备

  • maven

    • 下载安装,环境变量,修改阿里云镜像
  • gcc-c++

  • zlib-devel

  • autoconf

  • automake

  • libtool

#除了maven,其它的前提条件通过yum进行安装
yum -y install gcc-c++ lzo-devel zlib-devel autoconf automake libtool 

2.1 下载安装并编译lzo

#step1 
wget https://www.oberhumer.com/opensource/lzo/download/lzo-2.10.tar.gz#step2
tar -zxvf lzo-2.10.tar.gz -C /opt/module #step3 
cd /opt/module/lzo-2.10#step4
./configure --enable-shared --prefix /usr/local/hadoop/lzo#step5
make 
make install 

2.2 编译hadoop-lzo源码

#step1 下载hadoop-lzo源码
wget https://github.com/twitter/hadoop-lzo/archive/master.zip#step2 解压,并修改配置pom.xml文件
<hadoop.current.version>2.7.7</hadoop.current.version>#step3 声明2个临时的环境变量
export C_INCLUDE_PATH=/usr/local/hadoop/lzo/include 
export LIBRARY_PATH=/usr/local/hadoop/lzo/lib #step4 编译
cd /hadoop-lzo-master
mvn package -Dmaven.test.skip=true#step5 进入target目录
#hadoop-lzo 0.4.21-SNAPSHOT.jar就是编译成功的hadoop-lzo组件
pwd 
>>>>>
/opt/module/hadoop-lzo-master/targetlS -ahl
>>>>>
drwxr-xr-x. 2 root root   4096 Jan  9 15:19 antrun
drwxr-xr-x. 4 root root   4096 Jan  9 15:20 apidocs
drwxr-xr-x. 5 root root     77 Jan  9 15:19 classes
drwxr-xr-x. 3 root root     25 Jan  9 15:19 generated-sources
-rw-r--r--. 1 root root 188965 Jan  9 15:19 hadoop-lzo-0.4.21-SNAPSHOT.jar
-rw-r--r--. 1 root root 180845 Jan  9 15:20 hadoop-lzo-0.4.21-SNAPSHOT-javadoc.jar
-rw-r--r--. 1 root root  52042 Jan  9 15:19 hadoop-lzo-0.4.21-SNAPSHOT-sources.jar
drwxr-xr-x. 2 root root     71 Jan  9 15:20 javadoc-bundle-options
drwxr-xr-x. 2 root root     28 Jan  9 15:19 maven-archiver
drwxr-xr-x. 3 root root     28 Jan  9 15:19 native
drwxr-xr-x. 3 root root     18 Jan  9 15:19 test-classes

2.3 将编译好的jar包放入hadoop的common目录下

cp hadoop-lzo-0.4.21-SNAPSHOT.jar /opt/module/hadoop-2.7.7/share/hadoop/common/

2.4 分发jar包到其它的节点

cd /opt/module/hadoop-2.7.7/share/hadoop/common/
xsync hadoop-lzo-0.4.21-SNAPSHOT.jar

2.4 配置core-site.xml文件,配置LZO,并分发

<!--vim core-site.xml-->
<!--配置hadoop的lzo压缩支持-->
<property><name>io.compression.codecs</name><value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.BZip2Codec,org.apache.hadoop.io.compress.SnappyCodec,com.hadoop.compression.lzo.LzoCodec,com.hadoop.compression.lzo.LzopCodec</value>
</property>
<property><name>io.compression.codec.lzo.class</name><value>com.hadoop.compression.lzo.LzoCodec</value>
</property>
xsync core-site.xml

3 验证是否配置lzo成功

执行流程如下。

#step1 在本地创建一个文件test.txt
touch test.txt 
echo mother fucker damn shit >> test.txt #step2 上传至hdfs
hadoop fs -mkdir /input 
hadoop fs -put test.txt /input#step3 通过自带的mapreduce包执行wordcount命令如下,将结果输出到/output,需指定mapreduce的输出端压缩配置参数:mapreduce.output.fileoutputformat.compress=true mapreduce.output.fileoutputformat.compress.codec=com.hadoop.compression.lzo.LzopCodec
hadoop jar /opt/module/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount -Dmapreduce.output.fileoutputformat.compress=true -Dmapreduce.output.fileoutputformat.compress.codec=com.hadoop.compression.lzo.LzopCodec /input /output 

最终假如在HDFS的web端看到如下结果,说明lzo配置成功。切记
输出端lzo压缩结果

  • 我们平常说的lzo压缩是使用com.hadoop.compression.lzo.LzopCodec
  • 如果使用的是com.hadoop.compression.lzo.LzoCodec,那么生成的文件就是xx.lzo_deflate

4 LZO支持切片操作

参考地址:https://github.com/twitter/hadoop-lzo/#using-hadoop-and-lzo

如何让LZO文件支持切片,原生的.lzo文件之不支持切片的,我们需要通过hadoop的命令将某个文件建立切片索引,然后该lzo文件才能支持切片,建立索引的方式有2种

#方式1 
hadoop jar /path/to/your/hadoop-lzo.jar com.hadoop.compression.lzo.LzoIndexer big_file.lzo#方式2 
hadoop jar /path/to/your/hadoop-lzo.jar com.hadoop.compression.lzo.DistributedLzoIndexer big_file.lzo

因为切片的个数决定了Mapreduce任务的Maptask的个数,我们可以通过一个lzo文件分别在建立索引前后跑一下Mapreduce任务,查看job中的切片或者(map-task)的个数。

  • 对比流程操作如下
# 建立索引之前的准备,准备一个超过128M的lzo文件,假如命名为part-r-00000.lzo,且在/input1目录下# 1 创建索引之前执行MR
hadoop jar /opt/module/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount -Dmapreduce.job.inputformat.class=com.hadoop.mapreduce.LzoTextInputFormat /input1 /output1################################################################### 2 创建索引,然后执行MR
hadoop fs -rm -r /output1
#最终会为part-r-00000.lzo创建一个part-r-00000.lzo.index的索引文件,假如这个执行的参数为一个路径,那么会为路径下的每个lzo文件创建一个对应的.index索引。
hadoop jar /path/to/your/hadoop-lzo.jar com.hadoop.compression.lzo.DistributedLzoIndexer part-r-00000.lzohadoop jar /opt/module/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount -Dmapreduce.job.inputformat.class=com.hadoop.mapreduce.LzoTextInputFormat /input1 /output1
  • MR任务的日志信息显示样例
>>>>>>>#以下是跑MR任务的日志信息显示样例
21/01/10 19:34:10 INFO input.FileInputFormat: Total input paths to process : 1
21/01/10 19:34:10 INFO mapreduce.JobSubmitter: number of splits:1#切片个数Job CountersLaunched map tasks=1 #map task的个数

这篇关于Hadoop-之配置LZO压缩完整手册的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/477258

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

hdu1565(状态压缩)

本人第一道ac的状态压缩dp,这题的数据非常水,很容易过 题意:在n*n的矩阵中选数字使得不存在任意两个数字相邻,求最大值 解题思路: 一、因为在1<<20中有很多状态是无效的,所以第一步是选择有效状态,存到cnt[]数组中 二、dp[i][j]表示到第i行的状态cnt[j]所能得到的最大值,状态转移方程dp[i][j] = max(dp[i][j],dp[i-1][k]) ,其中k满足c