如何用hadoop分析数据(大数据集群Hadoop搭建)

LZO压缩

LZO,Lempel-Ziv-Oberhumer

致力于解压速度的一种数据压缩算法,是无损算法,实现它的一个自由软件工具是lzop。最初的库是用ANSI C编写、并且遵从GNU通用公共许可证发布的,LZO 有用于 Perl、Python 以及Java各种版本。

hadoop-LZO

Hadoop本身并不支持lzo压缩,需要使用twitter提供的hadoop-lzo开源组件,编译需依赖hadoop和lzo进行,地址:https://github.com/kevinweil/hadoop-lzo,编译后为:hadoop-lzo-0.4.20.jar。

Hadoop配置LZO压缩

上传编译后的jar

目录:/opt/module/hadoop-3.1.3/share/hadoop/common

同步至其他Hadoop集群

xsync.shhadoop-lzo-0.4.20.jar

xsync.sh脚本

#!/bin/bash # 获取输出参数 如果没有参数则直接返回 pcount=$# if [ $pcount -eq 0 ] then echo "没有参数无法运行!"; exit; fi # 获取传输文件名 p1=$1 filename=`basename $p1` echo "加载文件: $p1 成功 !" # 获取文件的绝对路径 pdir=`cd -P $(dirname $p1); pwd` echo "文件的全路径是: $pdir" # 同步用户 user='admin' # 同步主机 for host in node52 node53 do echo "================当前主机是 $host=================" rsync -rvl $pdir/$filename $user@$host:$pdir done echo "已完成 !"

配置文件:/opt/module/hadoop-3.1.3/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, com.hadoop.compression.lzo.LzoCodec, com.hadoop.compression.lzo.LzopCodec </value> </property> <property> <name>io.compression.codec.lzo.class</name> <value>com.hadoop.compression.lzo.LzoCodec</value> </property>

同步至其他Hadoop集群

xsync.shcore-site.xml

重启hadoop集群

hdp.sh start hdp.sh stop

hdp.sh脚本

#!/bin/bash # $#传递给脚本或函数的参数个数 # -lt //less than小于 if [ $# -lt 1 ] then echo "没有参数无法运行..." exit ; fi case $1 in "start") echo "================启动 hadoop集群=================" echo " --------------- 启动 hdfs ---------------" ssh node53 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh" echo " --------------- 启动 yarn ---------------" ssh node54 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh" echo " --------------- 启动 historyserver ---------------" ssh node53 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver" ;; "stop") echo "================关闭 hadoop集群=================" echo " --------------- 关闭 historyserver ---------------" ssh node53 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver" echo " --------------- 关闭 yarn ---------------" ssh node54 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh" echo " --------------- 关闭 hdfs ---------------" ssh node53 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh" ;; *) echo "输出参数错误..." ;; esac

查看Hadoop进程

xcall.sh jps

xcall.sh脚本

#!/bin/bash # 用户 user='admin' # 主机 for host in node52 node53 do echo "================当前主机是 $host=================" # $* 所有参数列表 ssh $user@$host "$*" done echo "已完成 !"

测试,上传文件

hadoop fs -mkdir /input hadoop fs -put R.txt /input

如何用hadoop分析数据(大数据集群Hadoop搭建)(1)

测试,执行wordcount程序

hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar \ wordcount -Dmapreduce.output.fileoutputformat.compress=true \ -Dmapreduce.output.fileoutputformat.compress.codec=com.hadoop.compression.lzo.LzoCodec \ /input /output

如何用hadoop分析数据(大数据集群Hadoop搭建)(2)

相关参数参考:

https://hadoop.apache.org/docs/stable/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页