任务二:MySQL数据库导入到Hbase

1.背景:

将第一次试验中的mysql数据导入到hbase中,对比SQL语句与Hbase查询语句的区别,对比Phoenix组件和原生Hbase查询的时间性能。尝试编程实现对Hbase数据库的访问。

2. 自行安装Hbase/Phoenix环境

由于设备条件有限,没有实现真正的分布式,于是使用的伪分布式进行的实验。
① Hadoop的安装和配置:

图2.1 Hadoop安装成功图

图2.2 HDFS配置完成展示

图2.3 HDFS配置完成
②Hbase安装配置:

图2.4 Hbase配置和安装完成
③ 以为要用sqoop进行数据的导入,所以安装了一个独立的zookeeper,方便后面从mysql导入hbase数据库数据。


图2.5 服务的启动

3. 实现数据从MySQL数据库导入Hbase数据库

1.   bin/sqoop import --connect jdbc:mysql://192.168.1.108:3306/imooc --username root --password '' --table tdb_goods --hbase-table test_imooc --column-family info --hbase-row-key goods_id
2.
3.  sqoop import --connect jdbc:mysql://192.168.1.103:3306/taxi --username root --password '' --table taxi_infor_little--hbase-table taxi --column-family info --hbase-row-key infor_id

找了一个小的数据表时可以正常的导入:

图3.1 导入的数据
通过程序连接Hbase数据库:
Hbase提供直接的java连接接口,如果想用其他的语言,要使用thrift。
进行连接:

5.   import happybase
6.  #连接
7.  connection = happybase.Connection('localhost')
8.  connection.open()
9.
10. # connection.create_table('mytable', {'name' : dict(max_versions=5), 'course':dict()})
11. #打印所有的表
12. print(connection.tables())
13. table = connection.table('Score')
14. row = table.row(b'95001')
15. print(row[b'course:Math'])
16.
17. #插入数据
18. table.put(b'95002', {b'course:Math':b'65', b'course:English':b'77'}
19. # 扫描表
20. for key, data in table.scan():
21.     print(key, data)
22.  table.delete(b'95002')
23.  #断开连接
24.  connection.close()

4.遇到的问题:

遇到的问题可以说是千奇百怪,按照遇到问题的先后顺序进行一个说明:
问题一:hbase无法启动。
刚开始进行配置安装完hadoop的HDFS后,无法启动Hbase的web访问页面,于是到网上去查询各种资料。最后结合着hadoop官网的指导按装教程和网上找来的资料,将hadoop的yarn、MapReduce均进行了配置。还找到了zookeeper的官网,一边查看官网的指导说明一边看网上的博客教程,正常将Hbase的web访问页面启动了起来。

问题二:无法通过虚拟机下的Ubuntu来访问Windows下的MySQL服务。
查询后发现是应为没有关闭Windows的防火墙。添加访问规则后将电脑重启终于可以正常访问到了Windows的MySQL服务。

问题三:MapReduce停留在0%,%0的地方不动。
查询后是因为yarn的配置问题,因为虚拟机的内存和硬件不够,于是在yarn中进行了配置。

问题四:job被无情的给kill掉了,并抛出了143错误代码。
就在数据sqoop的导入命令后,发现虚拟机和真机之间的数据交换量非常的大:

图4.1 数据交换量

此时以为要成功了,但是最后被告知超时600S,进程被杀。于是尝试将之前导入MySQL中的小数据进行一下导入,很正常的就导入了进去。查到的解决办法是说要在修改MapReduce的默认超时时间,但是根据在配置文件中进行修改后并没有起作用,依然是相同的问题。于是在小数据的基础上进行了实验。进行了查询等相关操作。
后面有同学在分享时提供了解决办法:在配置文件中添加相应的配置信息



图4.2 Job的完成情况

图4.3 导入小数据后的耗时情况
可以看到最后的一个job是成功的导入的,在Hbase的shell下面也可以查询到相应的数据:

图4.4 导入的数据
可以观察到,关于row-key的排列并不是像MySQL中那样,从小到大进行排列。

总结:
这次从平台的搭建到数据的导入,再到数据的的查询,遇到了很多的问题,当觉解决完这些问题后,感觉最大的收获是锻炼了自己解决问题的能力和手段,以后解决问题要多去官网查看相应的用户手册,官网的资料是最全面,也是最原始的。确保了信息的真实性。对于数据库的发展和方向,以及hadoop生态有了一个更加充分的认知,对于生态中各个软件的定位有了一个大致的了解。

将海量数据从MySQL数据库导入到Hbase相关推荐

  1. MySQL数据库导入或者同步大量数据时数据丢失解决方案

    MySQL数据库导入或者同步大量数据时数据丢失解决方案 参考文章: (1)MySQL数据库导入或者同步大量数据时数据丢失解决方案 (2)https://www.cnblogs.com/miss-li/ ...

  2. mysql数据库导出最大值_4.6 MySQL数据库导入与导出攻略

    4.6 MySQL数据库导入与导出攻略 4.6.1 Linux下MySQL数据库导入与导出 1. MySQL数据库的导出命令参数 主要是通过两个mysql和mysqldump命令来执行 (1) MyS ...

  3. mysql数据库导入导出

    mysql 数据库导入导出 普通账号(非root账号)对数据库进行导出: mysqldump -h127.0.0.1 -u dbuser -ppass db --skip-lock-tables &g ...

  4. 10.Mysql数据库导入导出和授权

    10.Mysql数据库导入导出和授权 数据导出 1.数据库数据导出 # 不要进入mysql,然后输入以下命令 导出某个库中的数据 mysqldump -u root -p tlxy > ~/De ...

  5. linux将mysql导出表数据导入另一台服务器_远程linux服务器mysql数据库导入和导出.sql文件...

    今天对需要将服务器上的数据库放到本地环境,之前没怎么这么操作过,ORZ,弱鸡,这篇帖子不错,收藏了!!! 远程linux服务器mysql数据库导入和导出.sql文件 大部分情况本地开发环境为windo ...

  6. python亿级mysql数据库导出_Python之csv文件从MySQL数据库导入导出的方法

    Python之csv文件从MySQL数据库导入导出的方法 发布时间:2020-10-26 07:39:02 来源:脚本之家 阅读:53 作者:张行之 Python从MySQL数据库中导出csv文件处理 ...

  7. Java实现MySQL数据库导入

    距离上班还有一段时间.现在总结一下如何使用Java语言实现MySQL数据库导入: 首先新建名为test的数据库: 其次执行下面Java代码: [java] view plaincopy import  ...

  8. MySQL数据库导入SQL[ERR]Unknown collation: ‘utf8mb4_0900_ai_ci‘的解决办法

    MySQL数据库导入SQL报错 Unknown collation: 'utf8mb4_0900_ai_ci'的解决办法 错误原因: 我本地的MySQL数据包版本为8.0的,而服务器上的MySQL版本 ...

  9. java实现 mysql导入数据库_Java实现MySQL数据库导入

    距离上班另一段时间.如今总结一下怎样使用Java语言实现MySQL数据库导入: 首先新建名为test的数据库: 其次运行以下Java代码: import java.io.File; import ja ...

最新文章

  1. ST17H26定时器注意事项
  2. 线程----BlockingQueue (转)
  3. Python自动化运维——文件内容差异对比
  4. 感知算法论文(十):Towards Universal Object Detection by Domain Attention(2019)
  5. css 旋转45_CSS教程——第14期
  6. 每天一个linux命令(1):ln 命令
  7. Visual Studio 编译优化选项:Debug与Release、禁止优化与O1、O2、Ox优化
  8. Ubuntu16.04--code::blocks16.01 的代码拷贝到Windows 8.1--visual studio 2013 注意事项
  9. 【转】linux内核态和用户态的区别
  10. ACT的摘要可以告诉我们的内容
  11. android进程守护 失效,保持Service不被Kill掉的方法--双Service守护 Android实现双进程守护 1...
  12. linux防火墙的开启与关闭
  13. setFitView的zoom只是整数,导致缩放尺寸不合适的解决方案
  14. Servlet 实现上传附件(支持多附件)
  15. 单细胞测序在免疫治疗研究中的应用
  16. 简述计算机的含义是什么,输入法全拼和双拼是什么意思?有什么区别?
  17. 在网上开店有哪些好处?最多可以开几个?
  18. DocArray 0.21.0版本发布!新增OpenSearch后端存储,支持Redis后端存储的多语言文本搜索!...
  19. goland使用fabric-go-sdk连接虚拟机fabric网络(保姆级教学)
  20. 字段属性——唯一约束

热门文章

  1. 高档自行车市场现状及未来发展趋势分析
  2. 7.29:正睿集训(人工智能峰会)day2
  3. 腾讯地图影像瓦片数据爬取--java代码(地图数据篇.9)
  4. C语言实现的简易五子棋
  5. IT领袖峰会精彩观点:4G时代不存在信令问题
  6. 解决Google Chrome启动页面被篡改锁定和劫持
  7. C++可视化-----QQ群聊系统
  8. [C++] [MinGW64] 安装glfw
  9. Mac重装cisco问题
  10. redis缓存mysql_redis缓存mysql数据