需求:
由于我们用的阿里云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为不同集群)相关推荐

  1. track_info分区表的创建并将ETL的数据加载到Hive表

    文章目录 track_info分区表的创建 将ETL的数据加载到Hive表 track_info分区表的创建 分区表 因为日志是一天一个分区 create external table track_i ...

  2. 大数据系列(一)之hadoop介绍及集群搭建

    大数据系列(一)之hadoop介绍及集群搭建 文章最早发布来源,来源本人原创初版,同一个作者: https://mp.weixin.qq.com/s/fKuKRrpmHrKtxlCPY9rEYg 系列 ...

  3. [大数据技术与应用省赛学习记录二]——模块一(HADOOP完全分布式集群搭建)

    **在操作前,先梳理一下HADOOP完全分布式需要做些什么,不然像无头的苍蝇一样,永远不知道做什么.因为我本人比赛是一台服务器Centos 7,与三台客户端Ubuntu 18.04,所以以物理机的角度 ...

  4. 大数据开发技术课程报告(搭建Hadoop完全分布式集群操作集群)

    文章目录 大数据开发技术课程报告内容及要求 一. 项目简介和实验环境 二. 虚拟机的各项准备工作 三. 安装JDK并配置环境变量 四. 安装Hadoop并配置环境变量 五. 配置Hadoop完全分布式 ...

  5. 『实践』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 ...

  6. 大数据开发·关于虚拟机Hadoop完全分布式集群搭建教程

    hadoop完全分布式集群搭建 一.搭建准备 1.安装VMware虚拟机 2.Xshell 7 远程客户端及Xftp 7安装 3.搭建模板虚拟机hadoop100 配置虚拟机网络 为虚拟机普通用户配置 ...

  7. 大数据学习笔记第1课 Hadoop基础理论与集群搭建

    大数据学习笔记第1课 Hadoop基础理论与集群搭建 一.环境准备 二.下载JDK 三.安装JDK 四.下载hadoop 五.安装hadoop集群 六.打通3台服务器的免密登录 七.hadoop集群配 ...

  8. mapbox 加载json数据 和数据中颜色 和高度 并根据数值加载颜色

    代码 //添加geojson数据map.on('load', function () {map.addLayer({'id': 'room-extrusion','type': 'fill-extru ...

  9. html分页自动加载数据,硕正控件默认会自动加载数据

    硕正控件 autoLoad 页面加载时是否自动加载表格数据 默认true,如果自己需要根据页面条件查询数据  建议设置为false  自己去查询加载数据. 硕正表格控件API 属性 属性的定义, 例如 ...

  10. HDFS High Availability(HA)高可用、单点故障、主备集群、脑裂问题、数据同步问题、HDFS HA解决方案—QJM

    HDFS High Availability(HA)高可用 1.1 High Availability背景知识 1.1.1 单点故障.高可用 单点故障(英语:single point of failu ...

最新文章

  1. 关于equals与hashcode的重写
  2. MOS管好坏的判别方法
  3. Makefile 实现工程的本地部署
  4. IronRuby:元编程特性【method_missing】的使用
  5. python运行程序-一文看懂python程序的执行过程
  6. python培训就业班口碑排行榜-Python就业班培训多少钱?老男孩Python收费标准
  7. ToDesk远程控制软件
  8. centos7镜像加速_使用阿里云容器镜像服务托管私有Docker镜像
  9. php怎么生成前端网页,PHP自动生成前端的表单框架
  10. hdu 4101(bfs+博弈)
  11. 指针一维数组名的含义
  12. ci mysql 缓存_CodeIgniter框架中启用和清除缓存的教程
  13. sytlengan2 代码解析
  14. Winform导入文件
  15. 操作系统分区原理(笔记)
  16. wps表格打印怎么铺满a4纸
  17. python+ opencv实现摄像头实时人脸识别并实现汉字标框
  18. 团队管理的“五大核心要素”,非常重要!
  19. 在Vivado下如何判断芯片是多die芯片-关于SSI的多方面解答
  20. 【小程序】提交成功和失败界面示例(图文+代码)

热门文章

  1. 移动宽带连接不上mysql_MySQL Workbench 6.2.4 下载 因为移动网络打不开官方也可能是国内网络问题 备用自己...
  2. python设置窗体标题_Python3 tkinter基础 TK title 设置窗体的标题
  3. dw如何点击图片放大的代码_JavaScript点小图弹出放大图片的代码
  4. Apache Flink 在斗鱼的应用与实践
  5. andorid自定义ViewPager之——子ViewPager滑到边缘后直接滑动父ViewPager
  6. 2019 年度全球程序员薪酬报告:40岁以后普遍遭遇收入天花板
  7. java gson json_Java利用gson处理json字符串
  8. MacBook pro HTML 编写,老司机血泪劝告:买MacBook Pro一定不要买顶配!
  9. b+树时间复杂度_几分钟学会Java实现图的最小生成树:Kruskal算法
  10. python反射实例化_python3 反射的四种基本方法解析