频道栏目
首页 > 资讯 > 其他 > 正文

hadoop集群中简单使用的脚本及问题解决

18-04-06        来源:[db:作者]  
收藏   我要投稿

文件脚本编写问题

在编写脚本的时候我们可能会遇到一些各种各样的小问题,比如放置位置,以及使用权限等。

文件脚本编写好以后可以直接放置到 /usr/local/sbin 目录下面,这样就可以不用去申请环境变量了,使用起来也就比较方便了。

chmod a+x [文件名] 付给权限

扩展

Slave的时候需要注意的一些问题

扩展的时候可以先直接按照Hadoop集群安装配置教程先进行。 这里需要更改 /usr/local/hadoop/etc/hadoop 路径下的 slave文件中的参数,需要把添加的节点加进去。
并且在Master里面的 /etc/hosts 中添加新加节点的IP和节点的命名。(如果想用节点的命名来连接任意一台节点计算机的话,我们需要把这个操作在每台节点计算机上进行) 如果存在改变节点名字的操作,在文件scp传输的时候可能会有错误,但是在警告中下面的语句有提示让移除之前命名和IP的对应关系,复制下来直接操作就可以了,然后在接着使用scp进行文件传输就没有什么问题了。

初始化集群

该脚本主要时对第一次使用集群的时候进行一个初始化。

init.sh源代码例子

#!/bin/bash
 hdfs namenode -format
start-all.sh

或者

start-dfs.sh
start-yarn.sh

创建目录

./bin/hdfs dfs -mkdir -p /user/hadoop

查看显示目录

hadoop fs –ls -R /

清理集群的脚本

该脚本旨在重新配置hadoop的时候我们需要清理一下集群中的东西,比如记录等。

clear.sh源代码例子

#!/bin/bash
stop-all.sh
xrm.sh /tmp/hadoop
xrm.sh /hadoop/logs
echo "clean done!"
(主要为了清除tmp下面的文件hadoop还有logs)

所有节点 文件查看脚本编写

该脚本用于一次查看所有集群节点相同位置下的文件,类似于手动在每个节点上输入ls指令进行查看。

xls.sh的源代码例子

#!/bin/bash
if [ $# -lt 1 ] ; then
echo no args
exit;
fi

#get first argument
arg1=$1;
cuser=`whoami`
fname=`basename $arg1`
dir=`dirname $arg1`
if [ $dir == "." ] ; then
dir=`pwd`
#   echo $dir
fi

for (( i=200;i<=500;i=i+100)) ;
do
echo ---------------ls $arg1 from s$i -------------;
ssh s$i ls $dir/$fname | xargs
echo
done

所有节点 文件拷贝脚本编写

该脚本旨在往每个节点拷贝数据,之前我们的拷贝是需要自己一个节点一个节点链接然后拷贝,但是如果我们每个节点都拷贝同样的数据时,这样做显然很麻烦,如果节点多的话还很浪费时间,这样我们就可以通过该脚本自己循环拷贝。

xcp.sh源代码例子

#!/bin/bash
if [ $# -lt 1 ] ; then
echo no args
exit;
fi

#get first argument
arg1=$1;
cuser=`whoami`
fname=`basename $arg1`
dir=`dirname $arg1`
if [ $dir == "." ] ; then
dir=`pwd`
#   echo $dir
fi
for (( i=200;i<=500;i=i+100)) ;
do
echo -----------coping $arg1 to $i------------------;
if [ -d $arg1 ] ; then
scp  -r  $arg1 $cuser@s$i:$dir
else
scp $arg1 $cuser@s$i:$dir
fi
echo
done

所有节点 文件删除脚本编写

该脚本旨在删除所有节点上相同的东西,比如hadoop的重新配置等,还有删除hadoop的log等文件,都比较方便。

xrm.sh的源代码例子

#!/bin/bash
if [ $# -lt 1 ] ; then
echo no args
exit;
fi

#get first argument
arg1=$1;
cuser=`whoami`
fname=`basename $arg1`
dir=`dirname $arg1`
if [ $dir == "." ] ; then
dir=`pwd`
#   echo $dir
fi
echo -----------------rming $arg1 from localhost-------------;
rm -rf $arg1
echo

for (( i=200;i<=500;i=i+100)) ;
do
echo ---------------rming $arg1 from s$i -------------;
ssh s$i rm -rf $dir/$fname
echo
done

所有节点执行同一指令的操作

该脚本旨在对每个节点都执行同一个指令,这样就不用每次都shell到每个子节点上去执行了,较为方便。

xcall.sh的源代码例子

#!/bin/bash
if [ $# -lt 1 ] ; then
echo no args
exit;
fi
echo -----------------xcall $arg1 from localhost-----------------
$@
echo
#get first argument
for (( i=0;i<=3;i=i+1));
do 
echo --------------------xcall $arg1 from Slave$i ------------------;
ssh Slave$i $@
echo
done
相关TAG标签
上一篇:Centos7 防火墙配置教程
下一篇:vmware中三种网络连接介绍
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站