设为首页 加入收藏

TOP

shell自动化配置Hadoop配置文件示例
2014-11-24 07:15:02 来源: 作者: 【 】 浏览:0
Tags:shell 自动化 配置 Hadoop 文件 示例

#!/bin/bash
read -p 'Please input the directory of hadoop , ex: /usr/hadoop :' hadoop_dir
if [ -d $hadoop_dir ] ; then
echo 'Yes , this directory exist.'
else
echo 'Error , this directory not exist.'
exit 1
fi


if [ -f $hadoop_dir/conf/core-site.xml ];then
echo "Now config the $hadoop_dir/conf/core-site.xml file."
read -p 'Please input the ip value of fs.default.name , i.e. hdfs://ip:port :' ip
i=1
while [ -z $ip ]
do
read -p 'Please input the ip value of fs.default.name , i.e. hdfs://ip:port :' ip
let i++
echo $i
if [ $i -gt 2 ];then
echo 'You have input three time , done , exit.'
exit 1
fi
done
if [ $ip = '' ];then
echo 'The value of ip can not null , exit.'
exit 1
fi
read -p "Please input the port value of fs.default.name , i.e. hafs://$ip:port :" port
if [ $port = '' ];then
echo 'The value of port can not null , exit.'
exit 1
fi
read -p 'Please input the dir value of hadoop.tmp.dir :' hadoop_tmp_dir
if [ $hadoop_tmp_dir = '' ];then
echo 'The value of hadoop.tmp.dir can not null , exit.'
exit 1
else
if [ ! -d $hadoop_tmp_dir ];then
echo 'The directory you have input is not exist , we will make it.'
mkdir -p $hadoop_tmp_dir
fi
fi
tmp_dir=$(echo $hadoop_tmp_dir|sed 's:/:\\/:g')

sed -i "s/ip/$ip/g" $hadoop_dir/conf/core-site.xml
sed -i "s/port/$port/g" $hadoop_dir/conf/core-site.xml
sed -i "s/tmp_dir/$tmp_dir/g" $hadoop_dir/conf/core-site.xml
else
echo "The file $hadoop_dir/core-site.xml doen't exist."
exit 1
fi
cat $hadoop_dir/conf/core-site.xml
echo 'Config the core-site.xml success !'
echo


关键部分分析:


1. tmp_dir=$(echo $hadoop_tmp_dir|sed 's:/:\\/:g')


我们输入的$hadoop_tmp_dir是类似:/usr/hadoop/tmp这样的,如果直接写在sed里:sed -i "s/tmp_dir/$hadoop_tmp_dir/g" $hadoop_dir/conf/core-site.xml ,这样会出现错误。因为它解析进去会是:sed -i "s/tmp_dir//usr/hadoop/tmp/g" $hadoop_dir/conf/core-site.xml这样的,显然不能满足,这里解决的方式是:想办法将/usr/hadoop/tmp的输入转换为:\ /usr\ /hadoop\/tmp的形式,即加入转义字符。sed ' s:/:\\/:g ' 这样就可以了,然后通过$(),取值赋给变量。


2. sed -i " s/ip/$ip/g " $hadoop_dir/conf/core-site.xml


这里就是所谓的对文件中字符串的替换,示例文件为:


< xml version="1.0" >
< xml-stylesheet type="text/xsl" href="configuration.xsl" >





fs.default.name
hdfs://ip:port


hadoop.tmp.dir
tmp_dir


3. 注意其它语法: if [ ] ; then else fi while [] do ..done i=0 let i++


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Hadoop涉及GBK编码的文件 下一篇Java注解annotation用法和自定义..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·MySQL 安装及连接-腾 (2025-12-25 06:20:28)
·MySQL的下载、安装、 (2025-12-25 06:20:26)
·MySQL 中文网:探索 (2025-12-25 06:20:23)
·Shell脚本:Linux Sh (2025-12-25 05:50:11)
·VMware虚拟机安装Lin (2025-12-25 05:50:08)