把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:9092 -topic test --time -2 (--time -1为查看kafka最大偏移量) test:2:0 test:1:0 test:0:0
显示三个partition最小offset都为0,这样的话我们可以直接从kafka把数据迁移到HDFS上面
还有另外一种情况:
如果最小offset不为0,需要先把hbase上面的数据导入到HDFS上,再把offset设置为之前存放在zookeeper上面的offset
方法:
1). 首先查看存放在zookeeper上面的offset /usr/local/zookeeper/bin/zkCli.sh -server 192.168.1.210:2181 #] get /consumers/test_group/offsets/test/0 16051516 cZxid = 0x10050df5c ctime = Wed Sep 19 16:15:50 CST 2018 mZxid = 0x100691806 mtime = Thu Nov 08 11:30:08 CST 2018 pZxid = 0x10050df5c cversion = 0 dataVersion = 6433 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 8 numChildren = 0 2). 把导入到Hbase的sparkstreaming任务kill掉,然后把hbase的数据全部导入到HDFS上 3). 然后编写导入到HDFS上面的spark代码,设置相同的group_id,则会读取之前存放在zookeeper中的offset
二. 把数据导入到HDFS上面(实现代码不在这里作展示)
我这边保存的文件以日期为命名格式(每天凌晨执行一次,在sparkstreaming里面设置) hdfs dfs -ls /data/res/20181108 drwxr-xr-x - hadoop hadoop 0 2018-11-08 00:00 /data/res/20181108/part-00000 drwxr-xr-x - hadoop hadoop 0 2018-11-08 00:00 /data/res/20181108/part-00001 drwxr-xr-x - hadoop hadoop 0 2018-11-08 00:00 /data/res/20181108/part-00002
三. 把数据进行getmerge,获取每天的数据,然后导入到hive表中去
实现shell脚本,每天凌晨1点跑,下面按天分割文件,主要是防止当天会掺杂着昨天的数据
]$ cat hdfs2hive.sh #! /bin/shrm -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 ];thenecho "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 ];thenecho "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 ];thenecho "Import local data to hive is success."fi fiif [ -n "$dir/$today" ];then$hive -e "LOAD DATA LOCAL INPATH '$dir/$today' INTO TABLE xxx.soda_report partition(dt='$today')"if [ $? -eq 0 ];thenecho "Import local data to hive is success."fi fi
转载于:https://www.cnblogs.com/654wangzai321/p/9970162.html
把kafka数据从hbase迁移到hdfs,并按天加载到hive表(hbase与hadoop为不同集群)相关推荐
- track_info分区表的创建并将ETL的数据加载到Hive表
文章目录 track_info分区表的创建 将ETL的数据加载到Hive表 track_info分区表的创建 分区表 因为日志是一天一个分区 create external table track_i ...
- 大数据系列(一)之hadoop介绍及集群搭建
大数据系列(一)之hadoop介绍及集群搭建 文章最早发布来源,来源本人原创初版,同一个作者: https://mp.weixin.qq.com/s/fKuKRrpmHrKtxlCPY9rEYg 系列 ...
- [大数据技术与应用省赛学习记录二]——模块一(HADOOP完全分布式集群搭建)
**在操作前,先梳理一下HADOOP完全分布式需要做些什么,不然像无头的苍蝇一样,永远不知道做什么.因为我本人比赛是一台服务器Centos 7,与三台客户端Ubuntu 18.04,所以以物理机的角度 ...
- 大数据开发技术课程报告(搭建Hadoop完全分布式集群操作集群)
文章目录 大数据开发技术课程报告内容及要求 一. 项目简介和实验环境 二. 虚拟机的各项准备工作 三. 安装JDK并配置环境变量 四. 安装Hadoop并配置环境变量 五. 配置Hadoop完全分布式 ...
- 『实践』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 ...
- 大数据开发·关于虚拟机Hadoop完全分布式集群搭建教程
hadoop完全分布式集群搭建 一.搭建准备 1.安装VMware虚拟机 2.Xshell 7 远程客户端及Xftp 7安装 3.搭建模板虚拟机hadoop100 配置虚拟机网络 为虚拟机普通用户配置 ...
- 大数据学习笔记第1课 Hadoop基础理论与集群搭建
大数据学习笔记第1课 Hadoop基础理论与集群搭建 一.环境准备 二.下载JDK 三.安装JDK 四.下载hadoop 五.安装hadoop集群 六.打通3台服务器的免密登录 七.hadoop集群配 ...
- mapbox 加载json数据 和数据中颜色 和高度 并根据数值加载颜色
代码 //添加geojson数据map.on('load', function () {map.addLayer({'id': 'room-extrusion','type': 'fill-extru ...
- html分页自动加载数据,硕正控件默认会自动加载数据
硕正控件 autoLoad 页面加载时是否自动加载表格数据 默认true,如果自己需要根据页面条件查询数据 建议设置为false 自己去查询加载数据. 硕正表格控件API 属性 属性的定义, 例如 ...
- HDFS High Availability(HA)高可用、单点故障、主备集群、脑裂问题、数据同步问题、HDFS HA解决方案—QJM
HDFS High Availability(HA)高可用 1.1 High Availability背景知识 1.1.1 单点故障.高可用 单点故障(英语:single point of failu ...
最新文章
- 关于equals与hashcode的重写
- MOS管好坏的判别方法
- Makefile 实现工程的本地部署
- IronRuby:元编程特性【method_missing】的使用
- python运行程序-一文看懂python程序的执行过程
- python培训就业班口碑排行榜-Python就业班培训多少钱?老男孩Python收费标准
- ToDesk远程控制软件
- centos7镜像加速_使用阿里云容器镜像服务托管私有Docker镜像
- php怎么生成前端网页,PHP自动生成前端的表单框架
- hdu 4101(bfs+博弈)
- 指针一维数组名的含义
- ci mysql 缓存_CodeIgniter框架中启用和清除缓存的教程
- sytlengan2 代码解析
- Winform导入文件
- 操作系统分区原理(笔记)
- wps表格打印怎么铺满a4纸
- python+ opencv实现摄像头实时人脸识别并实现汉字标框
- 团队管理的“五大核心要素”,非常重要!
- 在Vivado下如何判断芯片是多die芯片-关于SSI的多方面解答
- 【小程序】提交成功和失败界面示例(图文+代码)
热门文章
- 移动宽带连接不上mysql_MySQL Workbench 6.2.4 下载 因为移动网络打不开官方也可能是国内网络问题 备用自己...
- python设置窗体标题_Python3 tkinter基础 TK title 设置窗体的标题
- dw如何点击图片放大的代码_JavaScript点小图弹出放大图片的代码
- Apache Flink 在斗鱼的应用与实践
- andorid自定义ViewPager之——子ViewPager滑到边缘后直接滑动父ViewPager
- 2019 年度全球程序员薪酬报告:40岁以后普遍遭遇收入天花板
- java gson json_Java利用gson处理json字符串
- MacBook pro HTML 编写,老司机血泪劝告:买MacBook Pro一定不要买顶配!
- b+树时间复杂度_几分钟学会Java实现图的最小生成树:Kruskal算法
- python反射实例化_python3 反射的四种基本方法解析