linux有名管道实现hive并发控制
来源:互联网 发布:从mac导入iphone的照片 编辑:程序博客网 时间:2024/04/27 18:50
参考:http://egon09.blog.51cto.com/9161406/1754317
hive迁移历史数据,按照小时分区,一天24分区。补一年数据。如果不控制并发,linux会卡死,提交到hadoop也会失败。这里控制为20个并发任务。
#!/bin/bash
sys_start_time=`date +%s` #定义脚本运行的开始时间[ -e /tmp/fd1 ] || mkfifo /tmp/fd1 #创建有名管道
exec 3<>/tmp/fd1 #创建文件描述符,以可读(<)可写(>)的方式关联管道文件,这时候文件描述符3就有了有名管道文件的所有特性
rm -rf /tmp/fd1 #关联后的文件描述符拥有管道文件的所有特性,所以这时候管道文件可以删除,我们留下文件描述符来用就可以了
for ((i=1;i<=20;i++))
do
echo >&3 #&3代表引用文件描述符3,这条命令代表往管道里面放入了一个"令牌"
done
start_date="2017-01-03"
stop_date="2017-01-04"
arr=(00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23)
while [[ $start_date < $stop_date ]]
do
for var in ${arr[@]};
do
read -u3 #代表从管道中读取一个令牌
echo "$start_date"
{ # hive -hiveconf partitionDate=${start_date}_$var -f xx.sql>>dlog00.log
sleep 10 #sleep 1用来模仿执行一条命令需要花费的时间(可以用真实命令来代替)
echo 'success'${start_date}_$var
echo >&3 #代表我这一次命令执行到最后,把令牌放回管道
}&
done
start_date=`date -d "+1 day $start_date" +%Y-%m-%d`
done
wait
sys_stop_time=`date +%s` #定义脚本运行的结束时间
echo "TIME:`expr $sys_stop_time - $sys_start_time`"
exec 3<&- #关闭文件描述符的读
exec 3>&- #关闭文件描述符的写
r
1 0
- linux有名管道实现hive并发控制
- 有名管道的实现
- Linux有名管道编程
- 【Linux基础】有名管道
- linux 有名管道FIFO
- linux fifo 有名管道
- linux有名管道通信
- Linux之有名管道
- Linux 有名管道
- linux C++ 有名管道
- linux编程--有名管道
- Linux--有名管道
- linux--有名管道
- Linux进程间通信---有名管道 代码实现
- linux中利用有名管道实现进程之间的通信
- [Linux C编程]有名管道实现守护进程
- Linux进程通信 有名管道实现守护进程
- linux 下有名管道读写
- linux struct_file结构
- TotoiseSVN的基本使用方法
- [java 深入]《java 虚拟机规范 se7》 阅读笔记
- 云计算相关术语整理
- see declaration of 'i'
- linux有名管道实现hive并发控制
- Berkeley db Db Version Mismatch问题
- [LeetCode]461. Hamming Distance(汉明距离)
- 剑指offer--扑克牌顺子
- iOS NSURLConnection基础网络请求封装
- [03]语法、关键保留字及变量
- mysql-5.7.16-winx64的安装教程
- Linux中的系统调用及文件结构体成员
- Uva10285 详解 最长的滑雪路径(Longest Run on a SnowBoard)