大数据开发相关技术汇总

Posted 云中客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据开发相关技术汇总相关的知识,希望对你有一定的参考价值。

简单笔记

Hadoop

Kaflka

一种分布式的,基于发布 / 订阅的消息系统。[详细介绍](https://zhuanlan.zhihu.com/p/74063251)

  • 设计目标:
    • 以时间复杂度为 O(1) 的方式提供消息持久化能力,即使对 TB 级以上数据也能保证常数时间复杂度的访问性能。
    • 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒 100K 条以上消息的传输。
    • 支持 Kafka Server 间的消息分区,及分布式消费,同时保证每个 Partition 内的消息顺序传输。
    • 同时支持离线数据处理和实时数据处理。
    • Scale out:支持在线水平扩展。

Sqoop

Hadoop数据导入,导出工具。自动生成mapreduce。详细介绍

  • 导入数据:MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统;
  • 导出数据:从Hadoop的文件系统中导出数据到关系数据库;

  • 特点:
    • 可以将关系型数据库中的数据导入hdfs、hive或者hbase等hadoop组件中,也可将hadoop组件中的数据导入到关系型数据库中;
    • sqoop在导入导出数据时,充分采用了map-reduce计算框架,根据输入条件生成一个map-reduce作业,在hadoop集群中运行。采用map-reduce框架同时在多个节点进行import或者export操作,速度比单节点运行多个并行导入导出效率高,同时提供了良好的并发性和容错性;
    • 支持insert、update模式,可以选择参数,若内容存在就更新,若不存在就插入;
    • 对国外的主流关系型数据库支持性更好。

spark

Flink

flume

Dysnc

Mahout

关于大数据相关的问答汇总,持续更新中~

NO.1 想要学好大数据需掌握哪些技术?

答:1,Java编程技术

Java编程技术是大数据学习的基础,Java是一种强类型语言,拥有极高的跨平台能力,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等,是大数据工程师最喜欢的编程工具,因此,想学好大数据,掌握Java基础是必不可少的!

2.Linux命令

对于大数据开发通常是在Linux环境下进行的,相比Linux操作系统,Windows操作系统是封闭的操作系统,开源的大数据软件很受限制,因此,想从事大数据开发相关工作,还需掌握Linux基础操作命令。

  1. Hadoop

Hadoop是大数据开发的重要框架,其核心是HDFS和MapReduce,HDFS为海量的数据提供了存储,MapReduce为海量的数据提供了计算,因此,需要重点掌握,除此之外,还需要掌握Hadoop集群、Hadoop集群管理、YARN以及Hadoop高级管理等相关技术与操作!

  1. Hive

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行,十分适合数据仓库的统计分析。对于Hive需掌握其安装、应用及高级操作等。

  1. Avro与Protobuf

Avro与Protobuf均是数据序列化系统,可以提供丰富的数据结构类型,十分适合做数据存储,还可进行不同语言之间相互通信的数据交换格式,学习大数据,需掌握其具体用法。

6.ZooKeeper

ZooKeeper是Hadoop和Hbase的重要组件,是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组件服务等,在大数据开发中要掌握ZooKeeper的常用命令及功能的实现方法。

  1. HBase

HBase是一个分布式的、面向列的开源数据库,它不同于一般的关系数据库,更适合于非结构化数据存储的数据库,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,大数据开发需掌握HBase基础知识、应用、架构以及高级用法等。

8.phoenix

phoenix是用Java编写的基于JDBC API操作HBase的开源SQL引擎,其具有动态列、散列加载、查询服务器、追踪、事务、用户自定义函数、二级索引、命名空间映射、数据收集、行时间戳列、分页查询、跳跃查询、视图以及多租户的特性,大数据开发需掌握其原理和使用方法。

  1. Redis

Redis是一个key-value存储系统,其出现很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用,它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便,大数据开发需掌握Redis的安装、配置及相关使用方法。

  1. Flume

Flume是一款高可用、高可靠、分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。大数据开发需掌握其安装、配置以及相关使用方法。

  1. SSM

SSM框架是由Spring、SpringMVC、MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架。大数据开发需分别掌握Spring、SpringMVC、MyBatis三种框架的同时,再使用SSM进行整合操作。

12.Kafka

Kafka是一种高吞吐量的分布式发布订阅消息系统,其在大数据开发应用上的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。大数据开发需掌握Kafka架构原理及各组件的作用和使用方法及相关功能的实现!

13.Scala

Scala是一门多范式的编程语言,大数据开发重要框架Spark是采用Scala语言设计的,想要学好Spark框架,拥有Scala基础是必不可少的,因此,大数据开发需掌握Scala编程基础知识!

14.Spark

Spark是专为大规模数据处理而设计的快速通用的计算引擎,其提供了一个全面、统一的框架用于管理各种不同性质的数据集和数据源的大数据处理的需求,大数据开发需掌握Spark基础、SparkJob、Spark RDD、spark job部署与资源分配、Spark shuffle、Spark内存管理、Spark广播变量、Spark SQL、Spark Streaming以及Spark ML等相关知识。

15.Azkaban

Azkaban是一个批量工作流任务调度器,可用于在一个工作流内以一个特定的顺序运行一组工作和流程,可以利用Azkaban来完成大数据的任务调度,大数据开发需掌握Azkaban的相关配置及语法规则。

16.Python与数据分析

Python是面向对象的编程语言,拥有丰富的库,使用简单,应用广泛,在大数据领域也有所应用,主要可用于数据采集、数据分析以及数据可视化等,因此,大数据开发需学习一定的Python知识。

只有完整的学完以上技术,才能算得上大数据开发人才,真正从事大数据开发相关工作,工作才更有底气,升职加薪不成问题

NO.2新手入门大数据怎么做?

答:现在大数据行业已经趋于稳定,越来越多的中小企业从最初的跟风到冷静下来,如果确实想转行,最基础的,Linux的基础操作,还有就是掌握一门语言,推荐Python,简单易学,且很适合后期的数据挖掘和人工智能,hadoop生态圈的各个产品,离线分析和实时分析,当然,hive和spark了,不过前期你需要会scala,目前金融行业对数据的实时要求很高,哈哈,对于一个小白,这些已经够你学习好长时间得了

NO.3 什么是大数据,怎样利用大数据卖货?

答:在写这篇大数据文章之前,我发现身边很多IT人对于这些热门的新技术、新趋势往往趋之若鹜却又很难说的透彻,如果你问他大数据是什么?估计很少能说出一二三来。究其原因,一是因为大家对大数据这类新技术有着相同的原始渴求,至少知其然在聊天时不会显得很“土鳖”;二是在工作和生活环境中真正能参与实践大数据的案例实在太少了,所以大家没有必要花时间去知其所以然。

如果你说大数据就是数据大,或者侃侃而谈4个V,也许很有深度的谈到BI或预测的价值,又或者拿Google和Amazon举例,技术流可能会聊起hadoop和Cloud Computing,不管对错,只是无法勾勒对大数据的整体认识,不说是片面,但至少有些管窥蠡测、隔衣瘙痒了。……也许,“解构”是最好的方法。

第一层面是理论,理论是认知的必经途径,也是被广泛认同和传播的基线。我会从大数据的特征定义理解行业对大数据的整体描绘和定性;从对大数据价值的探讨来深入解析大数据的珍贵所在;从对大数据的现在和未来去洞悉大数据的发展趋势;从大数据隐私这个特别而重要的视角审视人和数据之间的长久博弈。

  第二层面是技术,技术是大数据价值体现的手段和前进的基石。我将分别从云计算、分布式处理技术、存储技术和感知技术的发展来说明大数据从采集、处理、存储到形成结果的整个过程。

  第三层面是实践,实践是大数据的最终价值体现。我将分别从互联网的大数据,政府的大数据,企业的大数据和个人的大数据四个方面来描绘大数据已经展现的美好景象及即将实现的蓝图。

 和大数据相关的理论

古语云:三分技术,七分数据,得数据者得天下。先不论谁说的,但是这句话的正确性已经不用去论证了。维克托·迈尔-舍恩伯格在《大数据时代》一书中举了百般例证,都是为了说明一个道理:在大数据时代已经到来的时候要用大数据思维去发掘大数据的潜在价值。书中,作者提及最多的是Google如何利用人们的搜索记录挖掘数据二次利用价值,比如预测某地流感爆发的趋势;Amazon如何利用用户的购买和浏览历史数据进行有针对性的书籍购买推荐,以此有效提升销售量;Farecast如何利用过去十年所有的航线机票价格打折数据,来预测用户购买机票的时机是否合适。

从大数据的价值链条来分析,存在三种模式:

  1- 手握大数据,但是没有利用好;比较典型的是金融机构,电信行业,政府机构等。

  2- 没有数据,但是知道如何帮助有数据的人利用它;比较典型的是IT咨询和服务企业,比如,埃森哲,IBM,Oracle等。

  3- 既有数据,又有大数据思维;比较典型的是Google,Amazon,Mastercard等。

现在和未来

  我们先看看大数据在当下有怎样的杰出表现:

  大数据帮助政府实现市场经济调控、公共卫生安全防范、灾难预警、社会舆论监督;

  大数据帮助城市预防犯罪,实现智慧交通,提升紧急应急能力;

  大数据帮助医疗机构建立患者的疾病风险跟踪机制,帮助医药企业提升药品的临床使用效果,帮助艾滋病研究机构为患者提供定制的药物;

  大数据帮助航空公司节省运营成本,帮助电信企业实现售后服务质量提升,帮助保险企业识别欺诈骗保行为,帮助快递公司监测分析运输车辆的故障险情以提前预警维修,帮助电力公司有效识别预警即将发生故障的设备;

  大数据帮助电商公司向用户推荐商品和服务,帮助旅游网站为旅游者提供心仪的旅游路线,帮助二手市场的买卖双方找到最合适的交易目标,帮助用户找到最合适的商品购买时期、商家和最优惠价格;

  大数据帮助企业提升营销的针对性,降低物流和库存的成本,减少投资的风险,以及帮助企业提升广告投放精准度;

  大数据帮助娱乐行业预测歌手,歌曲,电影,电视剧的受欢迎程度,并为投资者分析评估拍一部电影需要投入多少钱才最合适,否则就有可能收不回成本;

  大数据帮助社交网站提供更准确的好友推荐,为用户提供更精准的企业招聘信息,向用户推荐可能喜欢的游戏以及适合购买的商品。

  其实,这些还远远不够,未来大数据的身影应该无处不在,就算无法准确预测大数据终会将人类社会带往到哪种最终形态,但我相信只要发展脚步在继续,因大数据而产生的变革浪潮将很快淹没地球的每一个角落。

  比如,Amazon的最终期望是:“最成功的书籍推荐应该只有一本书,就是用户要买的下一本书。”

  Google也希望当用户在搜索时,最好的体验是搜索结果只包含用户所需要的内容,而这并不需要用户给予Google太多的提示。

  而当物联网发展到达一定规模时,借助条形码、二维码、RFID等能够唯一标识产品,传感器、可穿戴设备、智能感知、视频采集、增强现实等技术可实现实时的信息采集和分析,这些数据能够支撑智慧城市,智慧交通,智慧能源,智慧医疗,智慧环保的理念需要,这些都所谓的智慧将是大数据的采集数据来源和服务范围。

  未来的大数据除了将更好的解决社会问题,商业营销问题,科学技术问题,还有一个可预见的趋势是以人为本的大数据方针。人才是地球的主宰,大部分的数据都与人类有关,要通过大数据解决人的问题。

  比如,建立个人的数据中心,将每个人的日常生活习惯,身体体征,社会网络,知识能力,爱好性情,疾病嗜好,情绪波动……换言之就是记录人从出生那一刻起的每一分每一秒,将除了思维外的一切都储存下来,这些数据可以被充分的利用:

  医疗机构将实时的监测用户的身体健康状况;

  教育机构更有针对的制定用户喜欢的教育培训计划;

  服务行业为用户提供即时健康的符合用户生活习惯的食物和其它服务;

  社交网络能为你提供合适的交友对象,并为志同道合的人群组织各种聚会活动;

  政府能在用户的心理健康出现问题时有效的干预,防范自杀,刑事案件的发生;

  金融机构能帮助用户进行有效的理财管理,为用户的资金提供更有效的使用建议和规划;

  道路交通、汽车租赁及运输行业可以为用户提供更合适的出行线路和路途服务安排;

  ……

  当然,上面的一切看起来都很美好,但是否是以牺牲了用户的自由为前提呢?只能说当新鲜事物带来了革新的同时也同样带来了“病菌”。比如,在手机未普及前,大家喜欢聚在一起聊天,自从手机普及后特别是有了互联网,大家不用聚在一起也可以随时随地的聊天,只是“病菌”滋生了另外一种情形,大家慢慢习惯了和手机共渡时光,人与人之间情感交流仿佛永远隔着一张“网”。

随着数据越来越多,在缺乏监管之后,必然会有一场激烈的博弈:是以商业为中心还是以个人为中心。

NO.4大数据有没有数量级的标准?

答:现在大数据的概念非常火热,总是有很多创业团队、研究机构来炒大数据的概念。但深究之后发现,所谓大数据不过只是对小规模的业务数据做了一下数据挖掘而已,甚至于年数据量不过百万条的也自称是大数据平台。
那么,行业内是否应该有一个约定的标准,比如每日新生的有效数据量达到一个什么量级才有资格称为大数据?

大数据不仅仅是数量级的评定,还有多源性,可变特征,复杂度等等纬度。

我理解这个问题应该是问多大的数据称为大数据?回答这个问题还是先要理解大数据的概念,和具备大数据的思维。数据分为格式化数据和非格式化数据,比如每天监控器的图像数据数量巨大但是没有价值隔一天就扫除掉了,我们也不会理解这是大数据。所以,有价值的数据超出了原有的存储能力,我们认为是大数据。

还有就是即时数据处理的速度或者存储数据的处理调用速度满足不了日常的使用需求,我们说是大数据。

第三个,就是数据纬度多,复杂度多,合适多样,我们称为大数据。

所以,不能单独用数据量来衡量,比如一份较小的数据,但每天都需要被保存,而且横向与其他数据需要关联,那他就是大数据。而一份很大的数据,没有什么价值,也没有关键性,也不叫大数据!

NO.5如何避开互联网公司的大数据杀熟现象?

答:某航班的飞机若在同一用户账号上一定时间内被频繁搜索,很有可能就会涨价,而当你换一部手机时查看时,价格又回落为正常状态;

某线上产品对被判定为消费能力较高的客户和经常购买的刚需客户进行溢价,消费能力较低的客户则可以用更低的价格购买到该产品;

在游戏经常充值的“氪金”玩家并不会因为充值量大而更多受到游戏开发者的眷顾,反而是“萌新”更容易在抽奖中抽到珍品,因为要鼓励新人消费。

“大数据杀熟”是个罗生门,没有哪家公司敢承认,但许多消费者都认为自己中过招。

其实题主这个问题可以算半个伪命题——因为,仅凭我们自己,压根无法避开大数据杀熟,除非断绝互联网,而这对一个现代青年来说几乎不可能。所以在此,我只能用一些微乎其微的小方法教大家减少一点点“大数据杀熟”对我们个体带来经济的损失——其实在这个过程中,你在时间与精力上的损失未必就没有经济损失珍贵。

关掉cookie
Cookie是指某些网站为了辨别用户身份、进行时域跟踪而储存在用户本地终端上的数据,听起来很复杂,简单来说,Cookie就是服务器暂存放在你电脑上的一笔资料,好让服务器用来识别你的计算机。当你在浏览网站的时候,Cookie会帮你在网站上所打的文字或是一些选择,都记录下来。当下次你再光临同一个网站,服务器会根据Cookie里的内容来判断使用者,推送出个性化的网页内容给你。Cookie会让你的工作与娱乐更简单方便,例如记住曾填写过的用户名和密码、浏览历史便于下次打开,但你曾做过的偏好选择也正是大数据“套路”你的来源。

所以如果你想让浏览器拒绝网站存放Cookie到你的计算机,可按"工具→Internet选项",切换到"安全"标签,选择"自定义级别",找到Cookie部分,全都设为关闭,按下"确定"按钮后,再关闭浏览器即可。不过当你关闭Cookie之后,很多网站的个性化服务功能也不能再使用了。

减少自己信息的暴露
你的每一次搜索(以及搜索的频繁程度和时间),每一次收藏,每一次浏览,每一次购买都会记录在个人账号之中,尤其在现在网络实名制几乎已全面覆盖各主流APP的情况下,几乎意味着以上数据都记录在你的手机号上,搜索公司可以将你的数据卖给其他公司,这也是你为何总会收到垃圾广告短信的原因之一。减少自己信息的暴露,不使用购物类APP,而是使用网页版进行浏览以及购买。例如苹果自带的Safari、Google的Chrome浏览器等,都有无痕模式,开启后确实能让你的信息暴露得更少一点。

谨慎勾选手机权限
无论是iOS还是安卓系统,几乎每个APP在第一次打开使用时都要跳出弹框请求地理位置、麦克风和摄像头、相册、通知推送的权利,有的会请求开放通讯录,有的软件会在漫长的使用“生涯”中不断跳出提醒。但我的建议与选择是,只开必要的,例如地图软件请求地理位置合理,通讯录就不合理,同理修图软件请求相册合理,地理位置就不合理。在权限开放上采用“极简”的处理风格。

购买时货比三家,或者换台设备
实在需要购买,又不得不搜索时,可以用本机看好产品,然后借用朋友的手机进行购买,这种方式在机票预订和酒店预订上效果还不错。

话说回来,这些小技巧都是治标不治本,在现代互联网资本的运作下,我们普通用户殚精竭虑省下的那点小钱如滴进大海里的一滴水,对互联网来说无足轻重,而对我们消费者来说,这滴水能否省下都还是个问号——下班的你站在街头要打车,会因为不平等溢价而改乘公共交通工具吗?你在购买刚需物件时会因为上涨的百十来块钱而选择不购买了吗?

当我们孜孜不倦为了节省一点钱去换软件、删记录时,时间与精力的流逝让我们疲惫不堪。

NO.6 Hadoop一般用在哪些业务场景?

答:Hadoop可以做大数据量存储,它是分布式,可以存储离线的数据,不需要实时性的数据,就像云盘,网盘那样,你用的时候,可以直接读取就行。
你也可以将历史数据存储在Hadoop上,通过整体来分析数据,比抽样的数据要全,更可靠。
还可以处理大型文件,比如PB级别的,因为它的HDFS是分布式存储数据的,它会将数据按块来进行存储,一般是128M,现在3.0是256M。
Hadoop可以做日志处理: 通过MapReduce编程可以抽取想要的内容,也可以结合Flume来收集想要的数据,并通过Hive将数据保存到表,实际上数据底层还是存储在Hadoop上,进行日志分析。
Hadoop支持并行计算,因为它是分布式的,数据是存储在不同的机器上,如果你的需求满足分布式计算,那你就可以用MR来就行海量计算。我曾经用MR做过算法,那是2年前啦。
Hadoop还可以将数据从oracle、mysql、DB2、mongdb等的数据进行ETL处理后,存储在HDFS上进行保存。它有三个副本,非常可靠。
Hadoop还可以通过使用HBase做数据分析,因为HBase是基于Hadoop的数据库, 可以实现实时性,高效和随机读写。

关注我哦,每天更新~

以上是关于大数据开发相关技术汇总的主要内容,如果未能解决你的问题,请参考以下文章

第四期:有关大数据相关问答汇总,持续更新哦~

前端开发相关汇总

猿创征文|大数据开发必备的数据采集工具汇总

编程类知识脑图编程开发-大数据-云计算-人工智能知识系列干货与云盘链接汇总,v1.0版本

大数据开发及和大数据相关的技术

大数据开发及和大数据相关的技术