把kafka数据从hbase迁移到hdfs,并按天加载到hive表(hbase与hadoop为不同集群)
需求:
由于我们用的阿里云Hbase,按存储收费,现在需要把kafka的数据直接同步到自己搭建的hadoop集群上,(kafka和hadoop集群在同一个局域网),然后对接到hive表中去,表按每天做分区
一、首先查看kafka最小偏移量(offset)
/usr/local/kafka/bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list 192.168.1.210: -topic test --time - (--time -1为查看kafka最大偏移量)
test::
test::
test::
显示三个partition最小offset都为0,这样的话我们可以直接从kafka把数据迁移到HDFS上面
还有另外一种情况:
如果最小offset不为0,需要先把hbase上面的数据导入到HDFS上,再把offset设置为之前存放在zookeeper上面的offset
方法:
). 首先查看存放在zookeeper上面的offset
/usr/local/zookeeper/bin/zkCli.sh -server 192.168.1.210:
#] get /consumers/test_group/offsets/test/ cZxid = 0x10050df5c
ctime = Wed Sep :: CST
mZxid = 0x100691806
mtime = Thu Nov :: CST
pZxid = 0x10050df5c
cversion =
dataVersion =
aclVersion =
ephemeralOwner = 0x0
dataLength =
numChildren =
). 把导入到Hbase的sparkstreaming任务kill掉,然后把hbase的数据全部导入到HDFS上
). 然后编写导入到HDFS上面的spark代码,设置相同的group_id,则会读取之前存放在zookeeper中的offset
二. 把数据导入到HDFS上面(实现代码不在这里作展示)
我这边保存的文件以日期为命名格式(每天凌晨执行一次,在sparkstreaming里面设置)
hdfs dfs -ls /data/res/
drwxr-xr-x - hadoop hadoop -- : /data/res//part-
drwxr-xr-x - hadoop hadoop -- : /data/res//part-
drwxr-xr-x - hadoop hadoop -- : /data/res//part-
三. 把数据进行getmerge,获取每天的数据,然后导入到hive表中去
实现shell脚本,每天凌晨1点跑,下面按天分割文件,主要是防止当天会掺杂着昨天的数据
]$ cat hdfs2hive.sh
#! /bin/sh rm -f /data/hadoop/data/* hdfs="/usr/local/hadoop/bin/hdfs"
hive="/usr/local/hive/bin/hive" yesterday=`date +"%Y%m%d" -d "-1 days"`
today=`date +"%Y%m%d"` ## 合并hdfs文件夹到本地
hdfs_dir="/data/soda_yx/$yesterday" res=`$hdfs dfs -ls $hdfs_dir` if [ -n "$res" ];then
$hdfs dfs -getmerge $hdfs_dir "/data/hadoop/data/data/res.data"
if [ $? -eq 0 ];then
echo "merge to local file is success."
fi
fi ## 按天过滤出文件
dir="/data/hadoop/data"
`cat $dir/res.data |awk -F"\t" '{if($36=="'"$yesterday"'") print $0}' > $dir/$yesterday`
`cat $dir/res.data |awk -F"\t" '{if($36=="'"$today"'") print $0}' > $dir/$today`
if [ $? -eq 0 ];then
echo "filter file is success."
fi ## 插入数据到hive中去
if [ -n "$dir/$yesterday" ];then
$hive -e "LOAD DATA LOCAL INPATH '$local_file' INTO TABLE xxx.soda_report partition(dt='$yesterday')"
if [ $? -eq 0 ];then
echo "Import local data to hive is success."
fi
fi if [ -n "$dir/$today" ];then
$hive -e "LOAD DATA LOCAL INPATH '$dir/$today' INTO TABLE xxx.soda_report partition(dt='$today')"
if [ $? -eq 0 ];then
echo "Import local data to hive is success."
fi
fi
把kafka数据从hbase迁移到hdfs,并按天加载到hive表(hbase与hadoop为不同集群)的更多相关文章
- 本地数据文件加载到hive表
1.在test数据库下创建表格 hive> create table vod_record_all( > watch_time date, > device_id string, & ...
- 大数据学习之旅2——从零开始搭hadoop完全分布式集群
前言 本文从零开始搭hadoop完全分布式集群,大概花费了一天的时间边搭边写博客,一步一步完成完成集群配置,所以相信大家按照本文一步一步来完全可以搭建成功.需要注意的是本文限于篇幅和时间的限制,也是为 ...
- hbase运行mapreduce设置及基本数据加载方法
hbase与mapreduce集成后,运行mapreduce程序,同时需要mapreduce jar和hbase jar文件的支持,这时我们需要通过特殊设置使任务可以同时读取到hadoop jar和h ...
- 将HBase中的表加载到hive中
两种方式加载hbase中的表到hive中,一是hive创建外部表关联hbase表数据,二是hive创建普通表将hbase的数据加载到本地 1. 创建外部表 hbase中已经有了一个test表,内容如下 ...
- 『实践』VirtualBox 5.1.18+Centos 6.8+hadoop 2.7.3搭建hadoop完全分布式集群及基于HDFS的网盘实现
『实践』VirtualBox 5.1.18+Centos 6.8+hadoop 2.7.3搭建hadoop完全分布式集群及基于HDFS的网盘实现 1.基本设定和软件版本 主机名 ip 对应角色 mas ...
- EF如何操作内存中的数据以及加载相关联表的数据:延迟加载、贪婪加载、显示加载
之前的EF Code First系列讲了那么多如何配置实体和数据库表的关系,显然配置只是辅助,使用EF操作数据库才是每天开发中都需要用的,这个系列讲讲如何使用EF操作数据库.老版本的EF主要是通过Ob ...
- JavaScript之加载表格、表单行数据[插件]
/*** * name:加载表格或表单数据[通用] * name:load-table-or-form-data-common.js * * author:zengtai * date:2017-07 ...
- BulkLoad加载本地文件到HBase表
BulkLoad加载文件到HBase表 1.功能 将本地数据导入到HBase中 2.原理 BulkLoad会将tsv/csv格式的文件编程hfile文件,然后再进行数据的导入,这样可以避免大量数据导入 ...
- 大数据高可用集群环境安装与配置(06)——安装Hadoop高可用集群
下载Hadoop安装包 登录 https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/ 镜像站,找到我们要安装的版本,点击进去复制下载链接 ...
随机推荐
- empty是判断一个变量是否为“空”,而isset 则是判断一个变量是否已经设置
1.echo和print的区别php中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的.echo输出后没有返回值,但print有返回值,当其执行失败时返回flase.因此可以作 ...
- 高盛为什么认为中国AI领域将超越美国?
不久前,高盛发布的名为<中国在人工智能领域崛起>的研究报告,报告中,高盛认为中国已经成为AI领域的主要竞争者,中国政府建设“智慧型经济”和“智慧社会”的目标将有可能推动中国未来GDP的增长 ...
- SPOJ IM - Intergalactic Map - [拆点最大流]
题目链接:http://www.spoj.com/problems/IM/en/ Time limit:491 ms Memory limit:1572864 kB Code length Limit ...
- MySQL ·InnoDB 文件系统之文件物理结构
从上层的角度来看,InnoDB层的文件,除了redo日志外,基本上具有相当统一的结构,都是固定block大小,普遍使用的btree结构来管理数据.只是针对不同的block的应用场景会分配不同的页类型. ...
- Cloud Native Application理论备忘录之(一)——Microservice architectural style
感谢一路走来默默支持和陪伴的你~~~ ------------------欢迎来访,拒绝转载------------------- 1. 传统云平台的架构体系:用户界面层.业务逻辑层.数据访问层 2. ...
- Indexes (also called “keys” in MySQL)
High Performance MySQL, Third Edition by Baron Schwartz, Peter Zaitsev, and Vadim Tkachenko Is an ...
- 浏览器指纹 - HTTP cookie 浏览器指纹 欺诈检测 浏览器id hash 浏览器插件信息 canvas 字体信息
详解浏览器cookie和浏览隐私之间的关系http://www.iefans.net/cookie-yinsi-guanxi/ 详解浏览器cookie和浏览隐私之间的关系 浏览器相关 互联网 2013 ...
- C# 枚举 小总结
枚举 枚举类型声明为一组相关的符号常数定义了一个类型名称. 枚举类型为定义一组可以赋给变量的命名整数常量提供了一种有效的方法.例如:假设你必须定义一个变量,该变量的值表示一周中的一天.该变量只能存储七 ...
- 开启 NFS 文件系统提升 Vagrant 共享目录的性能
Vagrant 默认的 VirtualBox 共享目录方式读写性能表现并不好,好在 Vagrant 支持 NFS 文件系统方式的共享,我们可以启用 NFS 提升性能 开启方法 首先要把虚拟机的网络设置 ...
- TcMalloc的介绍以及Windows下安装使用
本文由博主(SunboyL)原创,转载请注明出处:http://www.cnblogs.com/xsln/p/Introduction_TcMalloc.html 介绍: TcMalloc(Threa ...