大数据一些启动脚本和采集脚本

-->只是为了自己方便所做的一些记录,仅供参考,欢迎指正<--

启动脚本,以flume为例:


#! /bin/bash

case $1 in
"start")
 nohup flume-ng agent --conf /opt/installs/flume1.9/conf --name a1 --conf-file /opt/installs/flume1.9/job/mall2.conf >/opt/installs/flume1.9/out2.txt 2>&1 &
;;
"stop")
  ps -ef | grep mall2.conf | grep -v grep | awk '{print $2}' | xargs kill
;;
*)
 echo "请输入正确的参数"
;;
esac

虚拟机群启动脚本:


#!/bin/bash
#验证参数
if(($#==0))
then
        echo 请传入要执行的命令!
        exit;
fi

echo "要执行的命令是:$@"

#批量执行
for((i=11;i<=13;i++))
do
        echo -----------------------hadoop$i---------------------
        ssh  hadoop$i "source /etc/profile;$@"
done

虚拟机群分发脚本:

#!/bin/bash
pcount=$#
if((pcount == 0));then
  echo no args;
  exit;
fi

pname=$1
#fname a.txt
fname=`basename $pname`
echo "$fname"
#获取上级目录绝对路径
#pdir /root/test1
pdir=`cd -P $(dirname $pname);pwd`
user=`whoami`
for((host=12;host<=13;host++));do
 echo "scp -r $pdir/$fname $user@hadoop$host:$pdir"
 scp -r  $pdir/$fname $user@hadoop$host:$pdir
done

flume采集脚本:


自己去官网找,下面列举一个最简单的写法:

#1.声明agent中包含的source、channel、sink的名称以及个数
#a1是agent的名称  r1是source的名称、c1是channel的名称、k1是sink的名称
a1.sources = r1
a1.channels = c1
a1.sinks = k1

#2.配置source
a1.sources.r1.type = spooldir
#不同的type,下面的属性是不一样
#对指定目录下的文件中数据进行采集
a1.sources.r1.spoolDir = /opt/data/upload
a1.sources.r1.fileSuffix = .done

#3.配置channel
a1.channels.c1.type = memory
a1.channels.c1.capacity = 10000
a1.channels.c1.transactionCapacity = 10000

#4.配置sink
a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = hdfs://hadoop10:9000/flume/%Y-%m-%d
#使用本地时间戳,生成path中时间转义符
a1.sinks.k1.hdfs.useLocalTimeStamp=true
a1.sinks.k1.hdfs.fileType = DataStream
#禁止根据时间滚动生成新文件
a1.sinks.k1.hdfs.rollInterval = 0
#当文件大小达到100M时,生成新文件
a1.sinks.k1.hdfs.rollSize = 104857600
#禁止根据event个数生成新文件
a1.sinks.k1.hdfs.rollCount = 0


#5.将source、channel、sink连接在一起
#r1采集的数据放到c1这个channel
a1.sources.r1.channels = c1  
#k1会从c1这个缓冲区读取数据,并且写出去
a1.sinks.k1.channel = c1    

sqoop采集脚本:


RDBMS(mysql) -> HDFS:

bin/sqoop import \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://hadoop10:3306/test1?characterEncoding=UTF-8 \
--username root \
--password 123456 \
--table t_user \
--num-mappers 4 \
--fields-terminated-by '\t' \
--target-dir /mysql/t_user \
--delete-target-dir

RDBMS -> Hive:

bin/sqoop import \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://hadoop10:3306/test1?characterEncoding=UTF-8 \
--username root \
--password 123456 \
--table t_user \
--num-mappers 1 \
--hive-import \
--fields-terminated-by "\t" \
--hive-overwrite \
--hive-database test_hive \
--hive-table hive_user

HDFS|hive -> RDBMS:

vi a.txt
# 在文件中添加如下内容
1 zhangsan true 20 2020-01-11
2 lisi false 25 2020-01-10
3 wangwu true 36 2020-01-17
4 zhaoliu false 50 1990-02-08
5 win7 true 20 1991-02-08


#在hdfs上创建sqoop目录(目录名称随意,不过需要和后边对应),将文件上传到sqoop目录下
hdfs dfs -mkidr /sqoop
hdfs dfs -put a.txt /sqoop

解决null值定义不一样问题:

在sqoop采集脚本中加上以下两行代码:

--null-string '\\N' \

--null-non-string '\\N' \

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值