hadoop安装Snappy HBase本地安装Snappy

1、环境

  • Centos7
  • hadoop-2.7.7
  • zookeeper-3.4.14
  • hbase-1.4.10
  • JDK1.8

2、hadoop安装snappy(集群,在主库安装)

    2.1、安装snappy需要Centos7安装一下插件

        必要插件执行以下命令(直接拷贝):

        yum install autoconf automake libtool cmake make zlib zlib-devel pkgconfig openssl openssl-devel openssl-libs   snappy snappy-devel bzip2 bzip2-devel jansson jansson-devel fuse fuse-devel gcc gcc-c++ libgcc protobuf protobuf-compiler

        官方文档中还有一个build-essential也需要安装,没有找到此插件安装方式也没有安装。但是在安装snappy插件时没有报这个插件错误,正常安装完成,所以暂时没有找到此插件什么用途....

    2.2、安装maven 3.6.2

        2.2.1、maven 3.6.2安装包

         下载地址:https://pan.baidu.com/s/1OHXqJI7L7HMCVXReE-OG_g&shfl=sharepset 提取码:vzqu 

                     或者直接网上下载

        2.2.2、将maven包上传至服务器

         hadoop安装Snappy HBase本地安装Snappy

        2.2.3、进入maven包所在目录,执行解压命令如下:

                 tar -xvf apache-maven-3.6.2-bin.tar.gz 

         执行完成:

         hadoop安装Snappy HBase本地安装Snappy

        2.2.4、配置环境变量使mvn命令生效

         vim /etc/profile   在profile文件中添加

         hadoop安装Snappy HBase本地安装Snappy

         export M2_HOME=/home/hadoop/apache-maven-3.3.9 //maven安装路径
         export PATH=$M2_HOME/bin:$PATH

         执行source /etc/profile 使环境变量生效

        2.2.5、测试maven是否安装成功

         执行命令mvn -version 输出 apache maven 版本号,  证明安装成功

         hadoop安装Snappy HBase本地安装Snappy

    2.3、安装Findbugs-3.0.1

        2.3.1、Findbugs-3.0.1安装包

         下载地址:https://pan.baidu.com/s/1oTFufzPKASZmZVwA_ik96g&shfl=sharepset 提取码:s7ej 

                     或者直接网上下载

        2.3.2、将maven包上传至服务器

         hadoop安装Snappy HBase本地安装Snappy

        2.3.3、进入findbugs包所在目录,执行解压命令如下:

                 tar -xvf findbugs-3.0.1.tar.gz 

         执行完成:

         hadoop安装Snappy HBase本地安装Snappy

        2.3.4、配置环境变量使findbugs生效

         vim /etc/profile   在profile文件中添加

         hadoop安装Snappy HBase本地安装Snappy

         export FINDBUGS_HOME=/home/hadoop/findbugs-3.0.1  //findbugs安装路径
         export PATH=$PATH:$FINDBUGS_HOME/bin

         执行source /etc/profile 使环境变量生效

        2.3.5、测试maven是否安装成功

         执行命令findbugs -version 输出 版本号,证明安装成功

         hadoop安装Snappy HBase本地安装Snappy

    2.4、安装Snappy

        2.4.1、Snappy安装包

         下载地址:https://pan.baidu.com/s/1aT-voN7TM6kUeZIVIa5p_w&shfl=sharepset 提取码:ly76 

                     或者直接网上下载

        2.4.2、将Snappy包上传至服务器

         hadoop安装Snappy HBase本地安装Snappy

        2.4.3、进入Snappy包所在目录,执行解压命令如下:

                 tar -xvf snappy-1.1.3.tar.gz 

         hadoop安装Snappy HBase本地安装Snappy

        2.4.4、安装Snappy

         逐步执行一下命令:

                cd snappy-1.1.3
                ./configure
                make
                make install

         如果执行报错,请安装make cmake 命令:yum install make cmake

       2.4.5、查看snappy是否安装成功

         ll /usr/local/lib | grep snappy

         hadoop安装Snappy HBase本地安装Snappy

         一共出现5个文件,证明安装成功。

    2.5、hadoop-src-2.7.7编译源码

         由于下载hadoop-2.7.7.tar.gz中不包含源码文件,所以需要使用hadoop-src-2.7.7包来编译源码

       2.5.1、hadoop安装包

         下载地址:https://pan.baidu.com/s/1kYgKiBSQZCzb-bprIcHT_Q&shfl=sharepset 提取码:h7zh 

                     或者直接网上下载

       2.5.2、将hadoop-2.7.7-src包上传至服务器

         hadoop安装Snappy HBase本地安装Snappy

       2.5.3、进入Snappy包所在目录,执行解压命令如下:

                 tar -xvf hadoop-2.7.7-src.tar.gz 

         hadoop安装Snappy HBase本地安装Snappy

       2.5.4、重新编译hadoop

         编译过程中,会出现java堆栈溢出情况,因此执行:export MAVEN_OPTS="-Xms256m -Xmx512m"扩大内存

         执行命令重新编译:

         hadoop安装Snappy HBase本地安装Snappy

         mvn package -Pdist,native -DskipTests -Dtar  -Drequire.snappy

          hadoop安装Snappy HBase本地安装Snappy

         编译时间较长,跟网络带宽有很大关系。(我编译了两个多小时)

         编译过程中可能会遇见hadoop-2.7.7-src/hadoop-common-project/hadoop-kms/tomcat  下载超时bug,下面提供一个下载好的tomcat,然后上传至hadoop-2.7.7-src/hadoop-common-project/hadoop-kms/downloads 目录下。

         链接地址:https://pan.baidu.com/s/11_LnL8cePAF6ZLAQ8VksTw&shfl=sharepset 提取码:xart 

         然后重新编译:

              mvn clean

              mvn package -Pdist,native -DskipTests -Dtar  -Drequire.snappy

         直到出现BUILD SUCCESS 编译成功

         编译完成:

         移步到hadoop-2.7.5-src/hadoop-dist/target/hadoop-2.7.5/lib/native下查看编译完成文件

         hadoop安装Snappy HBase本地安装Snappy

         注意:有其他安装文档博客中说编译完成后会出现一个名为hadoop-snappy-0.0.1-SNAPSHOT.jar的jar包,但是我这里编译完成后没有jar包,所以在网上下载了一个编译好的jar包,经过试用完美匹配。如果编译完成后有这个jar包可以直接跳过以下操作到2.5.5在继续执行。

         下载地址:https://pan.baidu.com/s/1g4SHNZAfxn3H0kFaVbKHbw&shfl=sharepset 提取码:coes 

         下载完成后,把jar包上传至hadoop-2.7.5-src/hadoop-dist/target/hadoop-2.7.5/lib/native目录下

       2.5.5、Hadoop添加Snappy支持

       特别注意:上面的编译,只需要在一台服务器安装即可,以下所有拷贝文件步骤,均需所有集群节点都要拷贝,配置可以不用,目前没有报错。

         2.5.5.1、拷贝文件

         将编译好的文件拷贝到hadoop中

         hadoop安装Snappy HBase本地安装Snappy

         cp -r * $HADOOP_HOME/lib/native      //hadoop安装目录下

         如果没有native文件则创建:mdkir $HADOOP_HOME/lib/native

         下面一步我没有做操作,启动hadoop没有报错,可以正常运行,也就是SNAPSHOT.jar这个jar包在native里面,如果后面启动hadoop时报错,可以尝试一下。

                           cp -r hadoop-snappy-0.0.1-SNAPSHOT.jar  $HADOOP_HOME/lib  

         查看/usr/local/lib下jdk指向哪里

         执行命令:ll /usr/local/lib 

         hadoop安装Snappy HBase本地安装Snappy

         由于我这里已经改过了指向的事jdk1.8,如果指向的是1.7的话请修改指向1.8步骤:

         先删除:rm -rf /usr/local/lib/libjvm.so

         然后执行:cp $JAVA_HOME/jre/lib/amd64/server/libjvm.so /usr/local/lib

         2.5.5.2、修改配置文件

         修改$HADOOP_HOME/etc/hadoop/hadoop-env.sh配置文件,在文件中加入:

         hadoop安装Snappy HBase本地安装Snappy

         export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native
         export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"
         export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native/

         修改 $HADOOP_HOME/etc/hadoop/core-site.xml配置文件,在文件中加入:

         hadoop安装Snappy HBase本地安装Snappy

         <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
           </value>
         </property>

         修改 $HADOOP_HOME/etc/hadoop/mapred-site.xml配置文件,在文件中加入:

         hadoop安装Snappy HBase本地安装Snappy

         <property>
                <name>mapreduce.map.output.compress</name>
                <value>true</value>
         </property>
         <property>
                <name>mapreduce.map.output.compress.codec</name>
                <value>org.apache.hadoop.io.compress.SnappyCodec</value>
         </property>

         重新启动hadoop

       2.5.6、测试Hadoop是否安装成功snappy

        执行hadoop checknative命令

        hadoop安装Snappy HBase本地安装Snappy

        出现 snappy:    true   $HADOOP_HOME/lib/native/libsnappy.so.1证明安装成功

3、hbase安装snappy

         hadoop安装完成snappy之后,hbase再安装snappy就简单多了。

    3.1、编译(所有主从节点都需要拷贝文件)

         第一步:到hbase目录,然后在hbase目录中创建文件夹$HBASE_HOME/lib/native/Linux-amd64-64/

         第二步:在hadoop安装snappy时,直接将编译hadoop-src最后产生的那些文件拷贝到第一步创建的那个目录里面

                cp -r $HADOOP/lib/native/* $HBASE_HOME/lib/native/Linux-amd64-64/

    3.2、配置文件

         修改$HBASE_HOME/conf/hbase-env.sh配置文件,在文件中加入

         hadoop安装Snappy HBase本地安装Snappy

         export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native/Linux-amd64-64/
         export HBASE_LIBRARY_PATH=$HBASE_LIBRARY_PATH:$HBASE_HOME/lib/native/Linux-amd64-64/

         重新启动hbase

4、验证

         配置完成之后,hadoop和hbase均需要全部重启。

    4.1、hadoop:

         执行hadoop checknative命令

        hadoop安装Snappy HBase本地安装Snappy

        出现 snappy:    true   $HADOOP_HOME/lib/native/libsnappy.so.1证明安装成功

    4.2、hbase:

         执行shell脚本:

         hadoop安装Snappy HBase本地安装Snappy

         :如果在执行create 建表时,一直不返回也不报错,那么应该就是集群从节点没有配置snappy信息,需要将2.5.5.1中拷贝的文件也拷贝到从节点上。

5、结论

安装snappy安装完成测试结果(数据一样)

     对比(磁盘占用):

          不用:数据200万条占用5个G左右磁盘大小

            用  :数据5800万条占用4个G左右磁盘大小

     对比(查询速度):

          不用:4亿筛选10万条需要20秒

            用  :暂时没有测试,等待后期补充。

新手进军hadoop确实挺难得,这东西基本摸索一周才搞定,希望对大家有所帮助。

本文完全根据自己配置、测试成功后编写。