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包上传至服务器
2.2.3、进入maven包所在目录,执行解压命令如下:
tar -xvf apache-maven-3.6.2-bin.tar.gz
执行完成:
2.2.4、配置环境变量使mvn命令生效
vim /etc/profile 在profile文件中添加
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 版本号, 证明安装成功
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包上传至服务器
2.3.3、进入findbugs包所在目录,执行解压命令如下:
tar -xvf findbugs-3.0.1.tar.gz
执行完成:
2.3.4、配置环境变量使findbugs生效
vim /etc/profile 在profile文件中添加
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 输出 版本号,证明安装成功
2.4、安装Snappy
2.4.1、Snappy安装包
下载地址:https://pan.baidu.com/s/1aT-voN7TM6kUeZIVIa5p_w&shfl=sharepset 提取码:ly76
或者直接网上下载
2.4.2、将Snappy包上传至服务器
2.4.3、进入Snappy包所在目录,执行解压命令如下:
tar -xvf snappy-1.1.3.tar.gz
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
一共出现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包上传至服务器
2.5.3、进入Snappy包所在目录,执行解压命令如下:
tar -xvf hadoop-2.7.7-src.tar.gz
2.5.4、重新编译hadoop
编译过程中,会出现java堆栈溢出情况,因此执行:export MAVEN_OPTS="-Xms256m -Xmx512m"扩大内存
执行命令重新编译:
mvn package -Pdist,native -DskipTests -Dtar -Drequire.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-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中
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
由于我这里已经改过了指向的事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配置文件,在文件中加入:
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配置文件,在文件中加入:
<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配置文件,在文件中加入:
<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命令
出现 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配置文件,在文件中加入:
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命令
出现 snappy: true $HADOOP_HOME/lib/native/libsnappy.so.1证明安装成功
4.2、hbase:
执行shell脚本:
注:如果在执行create 建表时,一直不返回也不报错,那么应该就是集群从节点没有配置snappy信息,需要将2.5.5.1中拷贝的文件也拷贝到从节点上。
5、结论
安装snappy安装完成测试结果(数据一样)
对比(磁盘占用):
不用:数据200万条占用5个G左右磁盘大小
用 :数据5800万条占用4个G左右磁盘大小
对比(查询速度):
不用:4亿筛选10万条需要20秒
用 :暂时没有测试,等待后期补充。
新手进军hadoop确实挺难得,这东西基本摸索一周才搞定,希望对大家有所帮助。
本文完全根据自己配置、测试成功后编写。