十年網站開發(fā)經驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網站問題一站解決
一.安裝 protobuf
ubuntu 系統(tǒng)
首先確保具有 gcc gcc-c++ libtool cmake 具有這些環(huán)境
1 在 /etc/ld.so.conf.d/目錄下創(chuàng)建文件 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/cdh6/cdh/5/
hadoop-2.6.0-cdh6.11.0-src.tar.gz
解壓。使用maven編譯
4.檢查文件
hadoop-2.6.0-cdh6.11.0/hadoop-dist/target/hadoop-2.6.0-cdh6.11.0/lib/native
目錄下是否具有 hadoop的本地庫以及 snappy的本地庫
cp ~apk/hadoop-2.6.0-cdh6.11.0/hadoop-dist/target/hadoop-2.6.0-cdh6.11.0/lib/native/* ~/app/hadoop/lib/native/
6.將本地庫同步到其他節(jié)點
7.配置 hadoop的 core-site.xml
加入
配置 mapred-site.xml
加入
配置 hbase的 hbase-site.xml
加入
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-cdh6.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.
先創(chuàng)建一張snappy的表
create 'snappyTest',{NAME=>'f',COMPRESSION => 'SNAPPY'}
descibe 'snappyTest'
TTL => 'FOREVER', COMPRESSION => 'SNAPPY', MIN_VERSIONS => '0' 看到這個snappy就可以了。
重點是我們要壓縮現(xiàn)有的表
可以在shell外執(zhí)行
$ 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手動壓縮。壓縮后會發(fā)現(xiàn) 數據有40%左右的壓縮比
java代碼創(chuàng)建Hbase表只需要
HColumnDescriptor HColumnDesc = new HColumnDescriptor("data");
HColumnDesc.setCompressionType(Algorithm.SNAPPY);//這句是關鍵
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。