美文网首页
HadoopLZO压缩配置

HadoopLZO压缩配置

作者: 大空翼123 | 来源:发表于2021-12-10 17:03 被阅读0次

    编译hadoop-lzo组件

    1)hadoop本身并不支持lzo压缩,故需要使用twitter提供的hadoop-lzo开源组件。hadoop-lzo需依赖hadoop和lzo进行编译,编译步骤如下。

    0. 环境准备

    maven(下载安装,配置环境变量,修改sitting.xml加阿里云镜像)

    gcc-c++

    zlib-devel

    autoconf

    automake

    libtool

    通过yum安装即可,yum -y install gcc-c++ lzo-devel zlib-devel autoconf automake libtool

    1. 下载、安装并编译LZO

    wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.10.tar.gz

    tar -zxvf lzo-2.10.tar.gz

    cd lzo-2.10

    ./configure -prefix=/usr/local/hadoop/lzo/

    make

    make install

    2. 编译hadoop-lzo源码

    2.1 下载hadoop-lzo的源码,下载地址:https://github.com/twitter/hadoop-lzo/archive/master.zip

    2.2 解压之后,修改pom.xml

        <hadoop.current.version>3.1.3</hadoop.current.version>

    2.3 声明两个临时环境变量

        export C_INCLUDE_PATH=/usr/local/hadoop/lzo/include

        export LIBRARY_PATH=/usr/local/hadoop/lzo/lib

    2.4 编译

        进入hadoop-lzo-master,执行maven编译命令

        mvn package -Dmaven.test.skip=true

    2.5 进入target,hadoop-lzo-0.4.21-SNAPSHOT.jar 即编译成功的hadoop-lzo组件

    配置hadoop

    2)将编译好后的hadoop-lzo-0.4.20.jar 放入hadoop-3.1.3/share/hadoop/common/

    3)同步hadoop-lzo-0.4.20.jar到hadoop103、hadoop104

    4)core-site.xml增加配置支持LZO压缩

    <configuration>

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

    </configuration>

    5)同步core-site.xml到hadoop103、hadoop104

    LZO创建索引

    1)创建LZO文件的索引,LZO压缩文件的可切片特性依赖于其索引,故我们需要手动为LZO压缩文件创建索引。若无索引,则LZO文件的切片只有一个。

    对上传的LZO文件建索引

    [zy@hadoop102module]$ hadoop jar/opt/module/hadoop-3.1.3/share/hadoop/common/hadoop-lzo-0.4.20.jar com.hadoop.compression.lzo.DistributedLzoIndexer /input/bigtable.lzo

         (4)再次执行WordCount程序

    Hadoop原生不支持lzo 要手动指定jar包sonnpy原生支持不用指定

    [zy@hadoop102module]$ hadoop jar

    /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar

    wordcount -Dmapreduce.job.inputformat.class=com.hadoop.mapreduce.LzoTextInputFormat /input

    /output2

    3)注意:如果以上任务,在运行过程中报如下异常

    Container

    [pid=8468,containerID=container_1594198338753_0001_01_000002] is running

    318740992B beyond the 'VIRTUAL' memory limit. Current usage: 111.5 MB of 1 GB physical memory

    used; 2.4 GB of 2.1 GB

    virtual memory used. Killing container.

    Dump of the process-tree for container_1594198338753_0001_01_000002 :

    解决办法:在hadoop102的/opt/module/hadoop-3.1.3/etc/hadoop/yarn-site.xml文件中增加如下配置,然后分发到hadoop103、hadoop104服务器上,并重新启动集群。

    <!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->

    <property>

      yarn.nodemanager.pmem-check-enabled

       false

    </property>

    <!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->

    <property>

      yarn.nodemanager.vmem-check-enabled

       false

    </property>

    相关文章

      网友评论

          本文标题:HadoopLZO压缩配置

          本文链接:https://www.haomeiwen.com/subject/ztocfrtx.html