在centos系統(tǒng)里,利用hadoop分布式文件系統(tǒng)(hdfs)實施數(shù)據(jù)壓縮可按照以下流程開展:
-
安裝Hadoop:首先要確認(rèn)Hadoop已在CentOS完成安裝。若未安裝,建議查閱Hadoop官方指南完成安裝。
-
設(shè)置Hadoop兼容壓縮:編輯Hadoop的配置文件 core-site.xml 和 hdfs-site.xml,激活壓縮功能并指定壓縮算法。
core-site.xml 示例配置如下:
<configuration><property><name>io.compression.codecs</name><value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec</value></property></configuration>
hdfs-site.xml 示例配置如下:
<configuration><property><name>dfs.replication</name><value>3</value></property><property><name>dfs.namenode.handler.count</name><value>100</value></property><property><name>dfs.datanode.handler.count</name><value>100</value></property><property><name>dfs.blocksize</name><value>134217728</value></property><property><name>dfs.namenode.datanode.registration.ip-hostname-check</name><value>false</value></property><property><name>io.compression.codec.snappy.class</name><value>org.apache.hadoop.io.compress.SnappyCodec</value></property></configuration>
-
開啟Hadoop集群服務(wù):保證Hadoop集群處于啟動狀態(tài)且運作無誤。
start-dfs.sh start-yarn.sh
-
借助Hadoop指令行工具執(zhí)行壓縮:運用Hadoop指令行工具把本地文件上傳至HDFS同時實現(xiàn)壓縮。
hadoop fs -copyFromLocal -p /local/path/to/file.txt /hdfs/path/to/destination/
-
于mapreduce任務(wù)中應(yīng)用壓縮:如果正在開發(fā)MapReduce程序,可在任務(wù)配置環(huán)節(jié)啟用壓縮。
Mapper輸出壓縮:
Configuration conf = new Configuration(); conf.set("mapreduce.map.output.compress", "true"); conf.set("mapreduce.map.output.compress.codec", "org.apache.hadoop.io.compress.SnappyCodec"); Job job = Job.getInstance(conf);
Reducer輸出壓縮:
Configuration conf = new Configuration(); conf.set("mapreduce.output.fileoutputformat.compress", "true"); conf.set("mapreduce.output.fileoutputformat.compress.codec", "org.apache.hadoop.io.compress.SnappyCodec"); Job job = Job.getInstance(conf);
-
核實壓縮成效:通過HDFS指令行工具驗證文件是否已被壓縮。
hadoop fs -ls /hdfs/path/to/destination/ hadoop fs -getfile /hdfs/path/to/destination/file.txt file.txt
依照上述步驟,你就能在CentOS系統(tǒng)中借助HDFS達(dá)成數(shù)據(jù)壓縮。依據(jù)實際需求挑選適合的壓縮算法,并在MapReduce任務(wù)中做相應(yīng)調(diào)整。
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載。
THE END