如何用hadoop分析数据(大数据集群Hadoop搭建)
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
测试,执行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
相关参数参考:
https://hadoop.apache.org/docs/stable/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com