scuess 发表于 2018-10-28 14:12:55

hadoop cdh版本安装snappy-liuhongyi115的博客

  一.安装 protobuf
  ubuntu 系统
  首先确保具有 gcc gcc-c++ libtool cmake 具有这些环境
  1在 /etc/ld.so.conf.d/目录下创建文件 libprotobuf.conf   写入内容 /usr/local/lib否则会报error while loading shared libraries: libprotoc.so.8: cannot open shared obj
  2../configure make&&make install
  2.验证安装完成
  protoc --version
  libprotoc 2.5.0
  二.安装 snappy 本地库
  http://www.filewatcher.com/m/snappy-1.1.1.tar.gz.1777992-0.html
  下载snappy-1.1.1.tar.gz
  解压./configure
  make&& makeInstall
  检查/usr/local/lib
  libsnappy.a
  libsnappy.la
  libsnappy.so
  libsnappy.so.1
  libsnappy.so.1.2.0
  三.编译 cdh hadoop的源码。(加入snappy支持)
  下载链接http://archive.cloudera.com/cdh5/cdh/5/
  hadoop-2.6.0-cdh5.11.0-src.tar.gz
  解压。使用maven编译
  4.检查文件
  hadoop-2.6.0-cdh5.11.0/hadoop-dist/target/hadoop-2.6.0-cdh5.11.0/lib/native
  目录下是否具有 hadoop的本地库以及 snappy的本地库

[*]将此目录下的文件拷贝到hadoop集群中的hadoop下的lib/native目录和hbase下的lib/native/Linux-amd64-64目录下,没有则新建,各节点均需拷贝。
  cp ~apk/hadoop-2.6.0-cdh5.11.0/hadoop-dist/target/hadoop-2.6.0-cdh5.11.0/lib/native/*    ~/app/hadoop/lib/native/
  6.将本地库同步到其他节点
  7.配置 hadoop的 core-site.xml
  加入
  
  io.compression.codecs
  org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.BZip2Codec,org.apache.hadoop.io.compress.SnappyCodec
  
  配置 mapred-site.xml
  加入
  
  mapreduce.map.output.compress
  true
  
  
  mapreduce.map.output.compress.codec
  org.apache.hadoop.io.compress.SnappyCodec
  
  
  mapreduce.admin.user.env
  LD_LIBRARY_PATH=/home/hadoop/app/hadoop/lib/native
  
  配置 hbase的 hbase-site.xml
  加入
  
  hbase.block.data.cachecompressed
  true
  
  8.重启hadoop的hdfs与yarn
  9.验证snappy是否成功。
  hadoop checknative
  18/03/07 17:33:36 WARN bzip2.Bzip2Factory: Failed to load/initialize native-bzip2 library system-native, will use pure-Java version
  18/03/07 17:33:36 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library
  Native library checking:
  hadoop:true /home/hadoop/app/hadoop/lib/native/libhadoop.so
  zlib:    true /lib/x86_64-linux-gnu/libz.so.1
  snappy:true /home/hadoop/app/hadoop/lib/native/libsnappy.so.1
  lz4:   true revision:10301
  bzip2:   false
  openssl: true /usr/lib/x86_64-linux-gnu/libcrypto.so
  看到snappy已经成功支持
  运行mapreduce任务
  hadoop jar ~/app/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.11.0.jar wordcount/input/gisData/output
  如果正常运行。则证明 snappy没有问题。如果有。
  Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCodeLoader.buildSupportsSnappy()Z
  请检查mapred-site.xml 的本地库配置
  10 启动hbase.
  先创建一张snappy的表
  create 'snappyTest',{NAME=>'f',COMPRESSION => 'SNAPPY'}
  descibe'snappyTest'
  TTL => 'FOREVER', COMPRESSION => 'SNAPPY', MIN_VERSIONS => '0'看到这个snappy就可以了。
  重点是我们要压缩现有的表
  可以在shell外执行
  $ echo "disable 'snappyTest2'" | hbase shell #禁用表
  $ echo "desc 'snappyTest2'" | hbase shell #查看表结构
  $ echo "alter 'snappyTest2',{NAME=>'f',COMPRESSION => 'SNAPPY'} " | hbase shell #压缩修改为snappy
  $ echo "enable 'snappyTest2'" | hbase shell #使用该表
  $ echo "major_compact 'snappyTest2'" | hbase shell #最好使该表的region compact一次
  也可以hbase shell 进shell手动压缩。压缩后会发现 数据有40%左右的压缩比
  java代码创建Hbase表只需要
  HColumnDescriptor HColumnDesc = new HColumnDescriptor("data");
  HColumnDesc.setCompressionType(Algorithm.SNAPPY);//这句是关键

页: [1]
查看完整版本: hadoop cdh版本安装snappy-liuhongyi115的博客