文档章节

跟小菜一起学大数据之工具篇(二)

小仙女的老苞米
 小仙女的老苞米
发布于 2017/09/06 21:38
字数 1617
阅读 45
收藏 0
点赞 0
评论 0

       今天咱们接着聊大数据入门之工具篇,为了提高学习的热情,这次咱们以一种需求驱动的方式来介绍剩下的几个工具。作为刚刚接触大数据,而还没有实战的你,可能会想,虽然HBase适合有很多优势,但他毕竟得依附于大数据平台,也就是说没有大数据平台那么HBase也无从谈起,而作为业务库数据,一般普通的小型系统为了做到数据的实效性往往会将数据存放在常见的关系型数据库中(顺便提一句,对于大型的系统有时也会选择直接将数据存放在大数据平台,这时的实效性就需要用到一些像Spark之类的专门处理大数据流的工具,这个后面聊),那么问题就来了,既然业务数据是在关系型数据库,而处理(比如最常见的根据业务数据在大数据平台上做一些聚类算法)大数据平台上,那势必就需要有一个桥梁来链接他们,这个桥梁就是今天要聊得第一个工具,即Sqoop。

        Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。其功能可以用下图形象化的表示。

 

Sqoop常见的用法包括两种,一种是以命令行方式执行数据的导入导出,另一种是以创建job的方式,两种的区别可以想象成shell命令和shell脚本的关系,即命令行只能执行一次, 下次执行还需要重写,而创建job后可以重复的调用该job,由于是初期入门,所以咱们只简单的了解一下各种工具,至于具体工具的用法会在后面结合具体的项目详细描述,在这里就不做过多的赘述了。

         在通过上面介绍的Sqoop将数据导入到大数据平台了,很多朋友可能又会问了,根据前面的介绍在大数据平台下用Hive对数据查询的话,最大的优势是可以自动将sql转换为map任务去执行,这对于执行ETL操作是优势,但对于临时数据的核对这却恰恰成为最大的劣势,因为他会将任意一个,哪怕是很简单的sql都解读为Map-Reduce的形式去执行,这样当我们只需要执行一个简单的查询的时候就需要浪费很多时间等着他去转换,这时我们就想要一种既可以在大数据平台下工作,又能明显提高效率的sql工具,这时就该 Impala 登场了。

        Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。简单的讲他就是专门解决大数据平台下数据实时交互的问题。Impala没有再使用缓慢的 Map-Reduce处理模式,而是通过使用与并行多节点的关系数据库中类似的分布式查询引擎(由Query Planner、Query Coordinator和Query Exec Engine三部分组成),可以直接从HDFS或HBase中用SELECT、JOIN和统计函数查询数据,从而大大降低了延迟。所以,Impala的最大特点也是最大卖点就是它的快速。下面列举一下impala主要的优点。

1、Impala不需要把中间结果写入磁盘,省掉了大量的I/O开销。

2、省掉了MapReduce作业启动的开销。MapReduce启动task的速度很慢(默认每个心跳间隔是3秒钟),Impala直接通过相应的服务进程来进行作业调度,速度快了很多。

3、Impala完全抛弃了MapReduce这个不太适合做SQL查询的范式,而是像Dremel一样借鉴了MPP并行数据库的思想另起炉灶,因此可做更多的查询优化,从而省掉不必要的shuffle、sort等开销。

4、通过使用LLVM来统一编译运行时代码,避免了为支持通用编译而带来的不必要开销。

5、用C++实现,做了很多有针对性的硬件优化,例如使用SSE指令。

6、使用了支持Data locality的I/O调度机制,尽可能地将数据和计算分配在同一台机器上进行,减少了网络开销。

       最后再简单的介绍一个常用的基于分布式文件存储的数据库MongoDB,他 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。在这里为了更好的理解MongoDB,举一个数据结构出来,以供参考。

        至此,大数据平台的入门类工具基本都介绍完了,鉴于是刚开始,只跟大家聊一些概念化的东西,相当于是对整个大数据平台的搭建以及使用有一个初步的概念,为了更好的理解这些工具,后面咱们会通过一个实战项目,更具体的说明一下这些工具的具体用法以及他们在实际运用中是如何紧密配合协作的。

扫码关注微信公众号,与小菜一起进步,共同成长。

© 著作权归作者所有

共有 人打赏支持
小仙女的老苞米
粉丝 8
博文 4
码字总数 4846
作品 0
青岛
大数据、人工智能的出现给每个人造成的影响居然那么大!这是程序员的福音......

《人类简史》作者尤瓦尔·赫拉利说:“人类从来没有做过什么自由的选择,你听从内心想法做出的一切选择,都是经过生物计算输出的结果。” 找对象,看大数据 我们往往在做出决定的时候都会在大...

uzv80px5v412ne ⋅ 2017/12/27 ⋅ 0

如何搭建高效率的生鲜 B2B 平台(B2B 技术共享第一篇)

很开心在这里和大家交流,我们是一群生鲜B2B的创业者,在生鲜领域创业三年多;我们也是一群工程师,致力于通过互联网产品和技术让我们的农业更轻松更健康,我们是来自宋小菜的产品技术团队,...

Scott ⋅ 06/11 ⋅ 0

C语言编程基础新手学习经典练习题和答案详解入门必备

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界 ⋅ 05/13 ⋅ 0

小菜学设计模式——单一职责原则

背景 本文标题为什么叫小菜学习设计模式,原因是本文内容主要是学习《大话设计模式》时的笔记摘要部分,当然,并不是记录书中小菜的学习过程,这个完全没有意义,而是指本人学习设计模式的成...

learn_more ⋅ 2015/05/25 ⋅ 0

深入理解MySQL 5.7 GTID系列(九):实际案例一

导 读 作者:高鹏(重庆八怪) 原文地址: https://www.jianshu.com/p/2c25842d58d3 深入理解MySQL 5.7 GTID系列文章共十篇,本文为第四篇,点击查看: 第一篇:深入理解MySQL 5.7 GTID系列(...

老叶茶馆 ⋅ 04/13 ⋅ 0

C语言编程学习开发的俄罗斯方块小游戏

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界 ⋅ 06/05 ⋅ 0

和lock一起学beego 博客系统开发为例(三)

mongodb: MongoDB(二):基础知识 Django学习笔记:为Model添加Action 和lock一起学beego 博客系统开发为例(三) 深入Go语言 - 1 django captcha imagintft: 关于captcha使用The _imagingft C ...

d_watson ⋅ 2016/06/16 ⋅ 0

一位转行成功并从事5年的大数据的经验分享

本人30岁,从学大数据到现在有6年的时间,我谈一下我的经验分享 我自己的经历:刚开始大数据是看书,一页页的看书,因为身边有一个好的资源,有问题可以问我朋友,后来发现看大数据的零基础书...

JAVA丶学习 ⋅ 04/01 ⋅ 0

C语言编程入门基础学习:控制语句之switch/case语句

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界 ⋅ 05/29 ⋅ 0

C语言编程学习项目实战:图书管理系统

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界 ⋅ 06/04 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Redis 单线程 为何却需要事务处理并发问题

Redis是单线程处理,也就是命令会顺序执行。那么为什么会存在并发问题呢? 个人理解是,虽然redis是单线程,但是可以同时有多个客户端访问,每个客户端会有 一个线程。客户端访问之间存在竞争...

码代码的小司机 ⋅ 43分钟前 ⋅ 0

到底会改名吗?微软GVFS 改名之争

微软去年透露了 Git Virtual File System(GVFS)项目,GVFS 是 Git 版本控制系统的一个开源插件,允许 Git 处理 TB 规模的代码库,比如 270 GB 的 Windows 代码库。该项目公布之初就引发了争...

linux-tao ⋅ 53分钟前 ⋅ 0

笔试题之Java基础部分【简】【二】

1.静态变量和实例变量的区别 在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变...

anlve ⋅ 今天 ⋅ 0

Lombok简单介绍及使用

官网 通过简单注解来精简代码达到消除冗长代码的目的 优点 提高编程效率 使代码更简洁 消除冗长代码 避免修改字段名字时忘记修改方法名 4.idea中安装lombnok pom.xml引入 <dependency> <grou...

to_ln ⋅ 今天 ⋅ 0

【转】JS浮点数运算Bug的解决办法

37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) 我先怀疑是四舍五入的问题,就直接用JS算了一个结果为:206.08499999999998 怎么会这样,两个只有一位小数的数字相乘,怎...

NickSoki ⋅ 今天 ⋅ 0

table eg

user_id user_name full_name 1 zhangsan 张三 2 lisi 李四 `` ™ [========] 2018-06-18 09:42:06 星期一½ gdsgagagagdsgasgagadsgdasgagsa...

qwfys ⋅ 今天 ⋅ 0

一个有趣的Java问题

先来看看源码: public class TestDemo { public static void main(String[] args) { Integer a = 10; Integer b = 20; swap(a, b); System.out......

linxyz ⋅ 今天 ⋅ 0

十五周二次课

十五周二次课 17.1mysql主从介绍 17.2准备工作 17.3配置主 17.4配置从 17.5测试主从同步 17.1mysql主从介绍 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主...

河图再现 ⋅ 今天 ⋅ 0

docker安装snmp rrdtool环境

以Ubuntu16:04作为基础版本 docker pull ubuntu:16.04 启动一个容器 docker run -d -i -t --name flow_mete ubuntu:16.04 bash 进入容器 docker exec -it flow_mete bash cd ~ 安装基本软件 ......

messud4312 ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 快别开心了,你还没有女友呢。

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享吴彤的单曲《好春光》 《好春光》- 吴彤 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :小萝莉街上乱跑,误把我认错成...

小小编辑 ⋅ 今天 ⋅ 9

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部