雇佣自由大数据架构师

乔治Kobiashvili

自由大数据架构师

GeorgiaToptal的自由大数据开发人员 Since 2019年9月4日

George是一位经验丰富的系统工程师,在构建和自动化复杂系统方面拥有广泛而深入的知识. 作为云技术的早期采用者,他领导一个团队设计和构建了一个本地云. 他在12年的教学中培养了指导和传达复杂概念的技能. 乔治精通C语言, Go, 和Python语言, 对数据科学和人工智能有浓厚兴趣, 专注于提供最高质量的结果. 他渴望处理复杂的问题.

显示更多

詹姆斯Cahall

自由大数据架构师

美国Toptal的自由大数据开发人员 Since 2016年10月17日

詹姆斯是一个注重结果的人, can-do, 拥有8年c级经验(15年以上的专业工程)的创业工程师-始终如一地提供成功的前沿产品来支持业务目标. 他是创新技术计划的架构师,这些计划增加并加速了业务收入流. 他还是Toon Goggles的首席技术官和首席开发者,这是一个拥有800万用户的SVOD/AVOD儿童娱乐服务.

显示更多

金成俊(安德鲁)

自由大数据架构师

澳大利亚Toptal的自由大数据开发人员 Since 2020年6月18日

作为一名拥有20多年经验的高效技术领导者, Andrew专门研究数据:集成, 转换, 工程, 分析, 可视化, science, ETL, 大数据架构, 分析平台, 云架构. 他拥有构建数据平台的一系列技能, 分析咨询, 趋势监测, 数据建模, 数据治理, 还有机器学习.

显示更多

布鲁诺·马查多·阿格里斯尼奥

自由大数据架构师

BrazilToptal的自由大数据开发人员 Since 2020年6月18日

在过去的十年里,布鲁诺一直在研究不同领域的数据库. 他还拥有Oracle SQL Expert认证,擅长优化SQL查询和PL/SQL过程, 但他也使用PostgreSQL和MySQL进行开发. 布鲁诺喜欢让自己与时俱进,这就是他攻读博士学位的原因.D. 在计算机科学领域.

显示更多

彼得·范·比克

自由大数据架构师

PortugalToptal的自由大数据开发人员 Since 2014年9月8日

Pieter拥有39年的编程经验,包括担任软件产品经理的时间. 他是个挑战者, 独立工作者, 在情况需要的时候也要有团队精神, 他在一系列的话题上拥有专业知识和技能, 包括大数据, 密码学, 还有机器学习.

显示更多

现在注册以查看更多资料.

开始招聘

招聘指南

《欧博体育app下载》

大数据是一个非常广泛的领域, 通常由数据科学家组成的混合团队来解决, 软件工程师, 和统计学家. 因此,真正的大数据专业知识需要的远不止学习特定技术的来龙去脉. 本指南提供了一些有效问题的样本,以帮助评估候选人对这一复杂领域掌握的广度和深度.

阅读招聘指南
Trustpilot
总体优势

在无风险试用后,98%的Toptal客户选择雇用我们的人才.

Toptal的筛选和匹配过程确保卓越的人才与您的精确需求相匹配.

开始招聘
报纸上铺天盖地

... 允许公司快速组建具有特定项目所需技能的团队.

尽管对程序员的需求在不断增加,但Toptal对自己近乎常春藤联盟级别的审查感到自豪.

我们的客户
为游戏制作应用程序
康纳肯尼
为游戏制作应用程序
构建一个跨平台的应用程序,在全球范围内使用
蒂埃里Jakicevic
构建一个跨平台的应用程序,在全球范围内使用
引领数字化转型
埃尔是
引领数字化转型
挖掘实时数据将改变行业的游戏规则
挖掘实时数据将改变行业的游戏规则
我们的客户怎么想
客户的速度 总大数据架构师4.4 / 5.0截至2023年12月23日,平均有869条评论
奖状

没有Toptal就不会有Tripcents. Toptal Projects使我们能够与产品经理一起快速发展我们的基金会, 带领开发人员, 高级设计师. 在60多天的时间里,我们从概念到Alpha. 其速度、知识、专业知识和灵活性是首屈一指的. Toptal团队是tripcents的一部分,就像tripcents的任何内部团队成员一样. 他们像其他人一样贡献并拥有开发的所有权. 我们将继续使用Toptal. 作为一家初创公司,它们是我们的秘密武器.

布兰特利·佩斯,首席执行官 & 联合创始人

Tripcents

我对我们与Toptal的合作经验非常满意. 和我一起工作的专业人员在几个小时内就和我通了电话. 在和他讨论了我的项目后,我知道他就是我想要的候选人. 我立即雇用了他,他没有浪费时间就完成了我的项目, 甚至通过添加一些很棒的设计元素来增加我们的整体外观.

保罗·芬利,局长

K Dunn & 的同事

与我合作的开发者都非常出色——聪明、有动力、反应灵敏. 过去很难找到高质量的工程师和顾问. 现在不是.

瑞安·洛克菲勒首席执行官

Radeeus

Toptal立即理解了我们的项目需求. 我们遇到了一位来自阿根廷的杰出自由职业者, 从第一天开始, 沉浸在我们的行业中, 与我们的团队无缝融合, 理解我们的愿景, 并产生了一流的结果. Toptal使与高级开发人员和程序员的联系变得非常容易.

Jason Kulik,联合创始人

ProHatch

作为一家资源有限的小公司,我们不能犯代价高昂的错误. Toptal为我们提供了一位经验丰富的程序员,他能够立即投入工作并开始做出贡献. 这是一次很棒的经历,我们会马上再来一次.

斯图尔特·波克尼校长

现场专用软件解决方案

我们使用Toptal聘请了一位具有丰富的Amazon Web Services经验的开发人员. 我们面试了四位候选人,其中一位非常符合我们的要求. 这个过程迅速而有效.

Abner Guzmán Rivera,首席技术官和首席科学家

照片Kharma

Sergio是一个很棒的开发者. 一流,反应迅速,工作效率高.

Dennis Baldwin,首席技术专家和联合创始人

PriceBlink

和Marcin一起工作是一种乐趣. 他很能干。, 专业, flexible, 并且非常迅速地理解需要什么以及如何实现它.

安德鲁·费舍尔,首席技术官

POSTIFY

我们需要一位能立即开始我们项目的专业工程师. 西马纳斯的工作超出了我们的预期. 不需要采访和追踪专家开发人员是一种非常节省时间的方法,并且让每个人都对我们选择切换平台以使用更健壮的语言感到更舒服. Toptal使这一过程变得简单方便. Toptal现在是我们寻求专家级帮助的首选之地.

Derek Minor, Web开发高级副总裁

网络传媒集团

Toptal的开发人员和架构师都非常专业,也很容易共事. 他们提供的解决方案价格合理,质量上乘,缩短了我们的发行时间. 再次感谢,Toptal.

首席执行官杰里米·韦塞尔斯

Kognosi

我们与Toptal合作非常愉快. 他们为我们的应用程序找到了完美的开发人员,让整个过程变得非常简单. 它也很容易超出最初的时间框架, 我们可以在整个项目中保持同一个承包商. 我们强烈推荐Toptal,因为它可以快速无缝地找到高素质的人才.

Ryan Morrissey,首席技术官

应用商业技术有限责任公司

我对Toptal印象深刻. 我们的开发人员每天都和我交流,他是一个非常强大的程序员. 他是一个真正的专业人士,他的工作非常出色. Toptal 5星.

首席执行官彼得罗·卡索

浪人娱乐有限公司

与Toptal合作是一次很棒的经历. 在使用它们之前, 我花了相当多的时间面试其他自由职业者,但没有找到我需要的. 在与Toptal合作后,他们在几天内就为我找到了合适的开发者. 与我一起工作的开发人员不仅提供高质量的代码, 但他也提出了一些我没有想到的建议. 我很清楚,阿莫里知道自己在做什么. 强烈推荐!

行政总裁郑志刚

Bulavard公司.

作为一名Toptal合格的前端开发人员,我还经营着自己的咨询业务. 当客户来找我帮忙填补他们团队中的关键角色时, Toptal是我唯一愿意推荐的地方. Toptal的所有候选人都是精英中的精英. Toptal是我在近5年的专业在线工作中发现的性价比最高的网站.

伊桑·布鲁克斯,首席技术官

Langlotz专利 & 商标工程公司.

在希格尔的早期, 我们需要一流的开发者, 以可承受的价格, 及时地. Toptal交付!

Lara Aldag,首席执行官

Higgle

Toptal能让你轻松找到合适的人选,让你放心,因为他们有能力. 我肯定会向任何寻找高技能开发人员的人推荐他们的服务.

Michael Gluckman,数据经理

Mxit

Toptal将我们的项目与最优秀的开发人员快速匹配的能力非常出色. 开发人员已经成为我们团队的一部分, 我对他们每个人所表现出的敬业精神感到惊讶. 对于那些希望与最好的工程师远程工作的人来说,没有比Toptal更好的了.

劳伦特·阿里,创始人

Livepress

Toptal让寻找合格的工程师变得轻而易举. 我们需要一个有经验的ASP.. NET MVC架构来指导我们的启动应用程序的开发, Toptal在不到一周的时间里为我们找到了三位优秀的候选人. 在做出我们的选择后,工程师立即在线并开始工作. 这比我们自己发现和审查候选人要快得多,也容易得多.

Jeff Kelly,联合创始人

协同解决方案

我们需要一些Scala的短期工作,Toptal在24小时内为我们找到了一位优秀的开发人员. 这在其他平台上是不可能实现的.

Franco Arda,联合创始人

WhatAdsWork.com

Toptal为快速发展和规模化的企业提供不妥协的解决方案. 我们通过Toptal签约的每一位工程师都迅速融入了我们的团队,并在保持惊人的开发速度的同时,将他们的工作保持在最高的质量标准.

Greg Kimball,联合创始人

nifti.com

如何通过Toptal招聘大数据架构师

1

与我们的行业专家交谈

Toptal的工程总监将与您一起了解您的目标, 技术需求, 团队动力.
2

与精心挑选的人才一起工作

几天之内,我们将为您的项目介绍合适的大数据架构师. 平均匹配时间在24小时以下.
3

绝对合适

与你的新大数据架构师一起工作一段试用期(满意才付工资), 在订婚前确保他们是合适的人选.

寻找拥有相关技能的专家

在我们的人才网络中访问大量熟练的开发人员,并在48小时内雇用最优秀的3%.

FAQs

  • Toptal大数据架构师有何不同?

    在Toptal, 我们会对我们的大数据架构师进行全面筛选,以确保我们只为您匹配最优秀的人才. 在200多个中,每年有5000人申请加入Toptal网络, 只有不到3%的人能达标. 你将与工程专家(而不是一般的招聘人员或人力资源代表)一起了解你的目标, 技术需求, 团队动力. 最终的结果是:经过专家审查的人才从我们的网络,定制匹配,以满足您的业务需求.

  • 我能在48小时内通过Toptal招聘到大数据架构师吗?

    取决于可用性和进度, 您可以在注册后48小时内开始与大数据架构师合作.

  • Toptal大数据架构师的无风险试用期是多长?

    我们确保您和您的大数据架构师之间的每次合作都从长达两周的试用期开始. 这意味着你有时间确认订婚是否成功. 如果你对结果完全满意, 我们会给你开时间单的,你愿意多久我们就多久. 如果您不完全满意,我们不会向您收费. 从那里, 我们要么分道扬镳, 或者我们可以为您提供另一位可能更合适的专家,我们将与他开始第二轮谈判, 无风险试用.

Share
Big Data

如何聘请优秀的大数据架构师

Big Data 是一个非常广泛的领域吗, 通常由数据科学家组成的混合团队来解决, 数据分析师, 软件工程师, 和统计学家. 因此,找到一个精通该领域的人,而不是微软Azure专家,是极不可能和罕见的. Rather, 人们很可能会寻找具有特定子领域专业知识的多个个人. 因此,本指南在较高层次上分为两部分:

本指南重点介绍与关键概念相关的问题, 范例, 以及大数据专家有望熟练掌握的技术. 记住, though, 并不是每个“A”考生都能回答全部问题, 回答所有问题也不能保证成为A级考生. 最终, 有效的面试和招聘 它是一门艺术还是一门科学.

大数据算法、技术和方法

说到大数据和数据管理, 具有相关算法的基础知识和工作经验, 技术, 大数据平台, 方法很重要. 一般来说, 掌握这些领域比成为一组特定软件语言或工具的专家需要更多的时间和技能. As such, 在这些领域拥有专业知识的软件工程师很难找到,而且对您的团队非常有价值. 下面的问题可以帮助你衡量这些专业知识.

问:给定一个未知长度的数据流, 并且要求创建一个固定大小的样本, 如何在整个数据集上执行一个简单的随机抽样? (i.e., 给定数据流中的N个元素, 你如何产生一个含有k个元素的样本, where N > k, 每个元素都有1/N的机会被包含在样品中?

解决这个问题的有效算法之一是 水库采样.

基本流程如下:

  1. 创建一个大小为k的数组.
  2. 用流中的前k个元素填充数组.
  3. 对于从流中读取的每个后续元素E(索引为i), 生成0到I之间的随机数j. 如果j小于k,替换jth 数组中含有E的元素.

这种方法使流中的每个元素在输出样本中出现的概率相同.

问:描述和比较一些用于聚类分析的更常见的算法和技术.

聚类分析是一种常用的无监督学习技术,应用于许多领域. 它在科学和商业上都有广泛的应用. 一些例子包括:

  • 生物信息学通过分析基因表达模式的相似性,将基因组织成簇.
  • 市场营销:发现不同的客户群体,并利用这些知识来组织针对正确市场细分的活动.
  • 保险:确定具有高平均索赔成本的保险持有人类别.

聚类算法 是否可以根据其底层集群模型进行逻辑分类,如下表所示.

聚类算法
Category描述优势缺点
Connectivity-based (.k.a. 分层)聚类
  • 基于物体之间“接近”的核心思想,彼此之间的关系更加密切, 这些算法根据距离将物体连接起来形成聚类
  • 采用距离算法(如 Levenshtein距离 在字符串比较的情况下)来确定对象的“接近度”
  • 联动标准可以基于最小距离(单联动), 最大距离(完整联动), 平均距离, 质心的距离, 或者其他任意复杂度的算法
  • 集群可以是聚集性的(从单个元素开始), 将它们聚集到集群中)或分裂(从完整的数据集开始), 将其划分为多个分区).
  • 不需要预先指定集群的数量
  • 是否可用于概念验证或初步分析
  • 生成一个层次结构,用户仍然需要从中选择适当的集群
  • 复杂性通常使它们对于大型数据集来说速度太慢
  • “链接现象”, 因此,异常值要么显示为额外的集群,要么导致其他集群错误地合并
Centroid-based
(a.k.a. k - means)聚类
  • 聚类由一个中心向量表示,它不一定是集合的成员.
  • 当簇数固定为K时, K-means聚类给出了一个优化问题的正式定义:找到K个聚类中心,并将对象分配到最近的聚类中心, 使得到集群的平方距离最小.
  • 有大量的变量, K- means在计算上可能比分层聚类更快(如果K很小)
  • K-Means可能产生比分层聚类更紧密的聚类, 特别是如果星团是球状的
  • 需要提前指定集群数量(K)
  • 喜欢大小近似的集群, 这通常会导致集群之间的边界设置不正确
  • 无法表示基于密度的集群
发布出去是依靠集群
  • 基于分布模型,集群对象似乎属于同一分布.
  • 非常类似于人工数据集生成的方式(例如.e.(通过从分布中随机抽样对象).
  • 为集群生成复杂的模型,这些模型还可以捕获属性的相关性和依赖性
  • 会遭受 过度拟合 (i.e.(描述随机误差或噪声,而不是潜在的关系)
  • 需要选择合适的数据模型进行优化(这对于许多现实世界的数据集来说是相当具有挑战性的)
Density-based集群
  • 聚类被定义为比数据集其余部分密度更高的区域. 稀疏区域中的对象通常被认为是噪声点和/或边界点.
  • 基于距离阈值连接点(类似于基于链接的聚类), 但只连接那些满足特定密度标准的.
  • 最流行的基于密度的聚类方法是 DBSCAN,其特点是一个定义良好的集群模型,称为“密度-可达性”。.
  • 不需要预先指定集群的数量
  • Can find arbitrarily-shaped clusters; can even find a cluster completely surrounded by (but not connected to) a different cluster
  • 基本上对数据库中点的顺序不敏感
  • 期望密度“下降”或“悬崖”来检测聚类边界
  • DBSCAN无法检测在许多真实数据中普遍存在的内在集群结构
  • 在由高斯分布混合组成的数据集上, 几乎总是优于能够精确模拟此类数据的EM聚类等方法

定义并讨论ACID、BASE和CAP定理.

ACID 指以下一组属性,它们共同保证数据库事务的可靠处理, 目标是“即时一致性”:

  • Atomicity. Requires each transaction to be “all or nothing”; i.e., 如果交易的一部分失败, 整个事务失败, 数据库状态保持不变.

  • Consistency. 要求每个事务将数据库从一种有效状态带到另一种有效状态. 根据所有定义的规则,写入数据库的任何数据都必须是有效的, 包括(但不限于)约束, cascades, triggers, 以及它们的任何组合.

  • Isolation. 要求并发执行事务,以产生与顺序执行相同事务所获得的系统状态相同的状态.

  • Durability. 要求, 一旦事务被提交, 即使在断电的情况下,它也会保持这种状态, crashes, 或错误.

许多数据库依赖于锁定来提供ACID功能. 锁定意味着事务标记它所访问的数据,以便DBMS知道在第一个事务成功或失败之前不允许其他事务修改它. 锁定的另一种选择是 多版本并发控制 其中,数据库为每个读事务提供优先级, 另一个活动事务正在修改的数据的未修改版本.

在没有单个节点负责影响事务的所有数据的分布式数据库中,保证分布式事务中的ACID属性会带来额外的复杂性. 网络连接可能失败, 或者一个节点可能成功地完成了其事务部分,然后被要求回滚其更改, 因为另一个节点发生故障. The 两阶段提交协议 (不要与两阶段锁定混淆)为分布式事务提供原子性,以确保事务中的每个参与者都同意是否应该提交事务.

与ACID(及其以即时一致性为中心的方法)相反, BASE(基本可用、软状态、最终一致性) 支持操作的可用性而不是一致性.

BASE是作为一种替代方案开发的,用于生成更具可扩展性和可负担性的数据架构. 允许不经常更新的数据,使开发人员可以自由地在整个系统中构建其他效率. In BASE, 工程师们相信数据具有“最终”更新的灵活性, 解决的或一致的, 而不是立即解决.

The 最终一致性 BASE采用的模型非正式地保证了这一点, 如果没有对给定数据项进行新的更新, 最终,对该项的所有访问都将返回最后更新的值. 一个达到最终一致性的系统通常被称为趋同, 或者实现副本聚合. 最终一致性有时被批评为增加了分布式软件应用程序的复杂性.

在几乎所有的模型中, 一致性和可用性等元素通常被视为资源竞争对手, 哪里调整一个会影响另一个. 因此, 上限定理 (a.k.a. 布鲁尔定理(Brewer’s theorem)指出,分布式计算机系统不可能同时提供以下三种保证中的两种以上:

  • C一致性(所有节点同时看到相同的数据)
  • A可用性(保证每个请求都收到关于其成功或失败的响应)
  • P分区容忍度(尽管系统的任意消息丢失或部分故障,系统仍继续运行)

在它推出后的十年里, 设计师和研究人员利用CAP定理来探索各种各样的新型分布式系统. 因此,CAP定理确实被证明是有用的, 促进讨论, debate, 以及解决权衡的创造性方法, 其中一些甚至产生了新的系统和技术.

然而与此同时, “三选二”的约束确实在某种程度上过度简化了这三个属性之间的紧张关系. 通过显式处理分区, 例如, 设计人员可以优化一致性和可用性, 从而实现三者之间的某种权衡. 尽管当存在分区时,设计人员确实需要在一致性和可用性之间做出选择, 在处理分区和从中恢复方面有很大的灵活性.

CAP定理的某些方面经常被误解, 特别是可用性和一致性的范围, 哪些会导致不良后果. 如果用户无法访问该服务, 除非部分服务在客户端上运行,否则在C和A之间没有选择. 这个异常, 通常称为断开连接操作或脱机模式, 变得越来越重要. HTML5的一些功能使断开操作更容易. 这些系统通常选择A而不是C,因此必须从长分区中恢复.

问:什么是降维?降维与处理大数据有何关联? 列举一些通常用于降维的技术.

降维是将高维数据转换为低维数据的过程, 通常用于可视化等目的.e, 投影到2D或3D空间以实现可视化), 压缩(为了有效的存储和检索), 或者去噪.

一些更常见的降维技术包括:

Note: 上面列出的每一种技术本身都是一个复杂的主题, 因此,每一个都作为一个超链接提供给那些有兴趣了解更多信息的人.

问:讨论一些常见的统计抽样技术,包括它们的优缺点.

在分析大数据时,处理整个数据集通常在操作上是站不住脚的. 探索一个有代表性的样本更容易, 更高效的, 在很多情况下,它几乎可以像探索整个数据集一样准确. 下表描述了一些 统计抽样 这些技术更常用于大数据.

常用抽样技术
技术描述优势缺点
简单随机抽样每个元素都有相同的选择机会(任何一对元素也是如此), 元素三元组, etc.)
  • 最大限度地减少偏见
  • 简化结果分析
  • 易受抽样误差影响
系统抽样对数据排序,并通过有序数据集定期选择元素
  • 易于实现
  • 可以是高效的(取决于订购方案)
  • 易受有序数据周期性的影响
  • 理论性质使其难以量化准确性
分层抽样将数据划分为单独的层(i.e.(分类),然后对每个地层分别取样
  • 能够对特定的子群体进行推断
  • Focuses on important subgroups; ignores irrelevant ones
  • 提高估计的准确性/效率
  • 不同的抽样技术可以应用于不同的子组
  • 可以增加样本选择的复杂性吗
  • 分层变量的选择可能很困难
  • 当没有同构子群时,它是无用的
  • 有时是否需要比其他方法更大的样本

问:解释一下“缓参无关”这个术语。. 讨论其在处理大数据的背景下的一些优点和缺点.

A 缓存无关 (a.k.a., 缓存超越(cache transcendent)算法的设计目的是在不知道CPU缓存大小的情况下利用它. 它的目标是在不修改或调优的情况下,在具有不同缓存大小的机器上表现良好, 或者对于具有不同缓存大小级别的内存层次结构.

Typically, 缓参无关算法采用递归分治方法, 这个问题被分成越来越小的子问题, 直到达到适合可用缓存的子问题大小. 例如, 通过递归地将每个矩阵划分为四个待乘的子矩阵,得到了最优的缓存无关矩阵乘法.

对特定机器进行调优, 可以使用混合算法,该算法使用针对底层特定缓存大小进行调优的阻塞, 但除此之外使用无关缓存算法.

表现出色的能力, 独立于缓存大小,没有特定于缓存大小的调优, 缓参无关方法的主要优点是什么. However, 重要的是要认识到,缺乏任何特定于缓存大小的调优也意味着缓存无关算法可能不如缓存感知算法(例如缓存感知算法)执行得好.e.(调优到特定缓存大小的算法). 缓参无关方法的另一个缺点是,它通常会增加数据结构的内存占用, 这可能会进一步降低性能. 有趣的是尽管, 在实践中, 缓存无关算法的性能通常与缓存感知算法惊人地相似, 让它们在大数据处理中变得更加有趣和相关.

大数据技术

这些天, it’s not only about finding a single tool to get the job done; rather, 它是关于建立一个可扩展的架构来有效地收集, process, 并查询大量的数据. 具备强大的大数据算法基础知识, 技术, 和方法, 大数据专家将能够从不断增长的技术领域中使用工具,这些工具可用于利用大数据提取可操作的信息. 下面的问题可以帮助评估候选人在这方面的专业知识.

问:什么是Hadoop? 它的主要特点是什么? 它由哪些模块组成?

Apache Hadoop 软件框架是否允许跨计算机集群对大型数据集进行分布式处理. 它旨在有效地从单个服务器扩展到数千台机器, 每个都提供本地计算和存储. 而不是依赖硬件来提供高可用性, 库本身设计用于检测和处理应用层的故障.

该项目包括以下模块:

  • HDFS (Hadoop Distributed File System): 提供对应用程序数据的高吞吐量访问的分布式文件系统.
  • Hadoop MapReduce: 并行处理大型数据集的系统.
  • Hadoop纱: 用于作业调度和集群资源管理的框架.
  • Hadoop常见: 支持其他Hadoop模块的常用实用程序.

问:提供HDFS的概述,包括HDFS集群及其组件的描述.

HDFS 是高度容错的分布式文件系统吗, 通常用作Hadoop作业中的数据源和数据输出. 它建立在一个简单的写一次读多(可能有追加)访问的一致性模型上. 它支持传统的目录和文件分层组织.

HDFS采用主/从架构. An HDFS集群 由单个 NameNode管理文件系统命名空间和规范客户端对文件的访问的主服务器. 此外,还有一些 DataNodes,通常是集群中的每个节点一个,它们管理附加到它们所运行的节点上的存储. HDFS公开了一个文件系统命名空间,允许用户数据存储在文件中. 在内部, 文件被分割成一个或多个块,这些块存储在一组datanode中. NameNode执行文件系统命名空间操作,如打开, closing, 重命名文件和目录. 它还决定了块到datanode的映射. datanode负责处理来自文件系统客户端的读写请求. datanode也执行块创建, deletion, 并根据NameNode的指令进行复制.

HDFS集群还包含一个被称为 二次NameNode 它定期下载当前的NameNode映像,编辑日志文件,并将它们连接到一个新映像中. 并将新图像上传到NameNode. (尽管它的名字,次要的NameNode做 not 作为主NameNode在故障时的备份.)

需要注意的是,HDFS是用来处理大文件的, 默认块大小为128 MB. 这意味着,例如,一个1gb的文件将被分割成8个块. 另一方面,一个只有1 KB的文件仍然需要一个完整的128 MB块. 选择能够优化集群性能的块大小可能是一个挑战,在这方面没有“放之四海而皆准”的答案. 将块大小设置为过小的值可能会增加网络流量,并给服务器带来巨大的开销 NameNode,它处理每个请求并定位每个块. 另一方面,将其设置为太大的值可能会导致大量的空间浪费. 因为HDFS的重点是大文件, 一种策略是将小文件合并成大文件, 如果可能的话.

问:请概述一下MapReduce, 包括对其关键组成部分的讨论, features, 和福利.

MapReduce 处理和生成大型数据集的编程模型和相关实现是并行的吗, 集群上的分布式算法.

MapReduce程序由一个 Map() 执行过滤和排序的过程 Reduce() 执行摘要(i.e.(数据约简)操作. MapReduce系统通过编组分布式服务器来编排处理过程, 并行运行各种任务, 管理系统各部分之间的所有通信和数据传输, 并提供冗余和容错性.

MapReduce使用集群或网格中的大量节点处理跨大型数据集的并行化问题,如下所示:

  • 映射步骤: 主节点接受输入, 把它分成更小的子问题, 并将它们分发给工作节点. 工作节点可以依次执行此操作,从而形成多级树结构. 工作节点处理较小的问题,并将答案传回主节点.

  • 减少步骤: 主节点从它的工作节点收集答案,并将它们组合成它的输出.e.(它所要解决的问题的答案).

MapReduce允许分布式处理映射和约简操作. 前提是每个映射操作相互独立, 所有映射都可以并行执行(尽管在实践中,这受到独立数据源数量和/或每个数据源附近的cpu数量的限制)。. 类似的, 一组“还原器”可以执行还原阶段, 假设map操作的所有输出共享相同的键同时呈现给同一个reducer, 或者说约简函数是结合式的. 虽然与更顺序的算法相比,这个过程通常显得效率低下, MapReduce可以应用于比高性能服务器通常可以处理的大得多的数据集.g., 一个大型的“商品”服务器群可以使用MapReduce在几个小时内对1拍字节的数据进行排序)。.

MapReduce的并行性还有助于在操作过程中从服务器或存储的部分故障中恢复.e., 如果一个映射器或reducer失败, 这项工作可以重新安排, 假设输入数据仍然可用). 这一点尤为重要, 因为单节点的故障在多机器集群中相当常见. 当有成千上万的圆盘旋转几个小时, 他们中的一两个在某个时候失败并不是不可能的.

MapReduce框架的主要贡献并不是map和reduce函数本身, 但可伸缩性和容错性实现了各种应用程序. 应该注意的是,MapReduce的单线程实现通常不会比传统实现快. 它的好处通常只有在优化的分布式shuffle操作(降低网络通信成本)和框架的容错特性发挥作用时才能实现.

作为旁注, MapReduce这个名字最初指的是谷歌的一项专有技术,但后来被推广了.

问:请详细描述MapReduce的进程.

并不是所有的大数据软件工程师都熟悉MapReduce过程的内部, 这些人将会更好地利用它的能力,从而构建和设计一个最优的解决方案.

MapReduce库是用多种编程语言编写的, 有不同程度的优化. 一个流行的开源实现是Apache Hadoop. 因此,我们提供了一个以hadoop为中心的MapReduce过程描述, 这里描述的Apache Hadoop MapReduce 1 (MR1)和Apache Hadoop MapReduce 2 (MR2), a.k.a. YARN). 为了简单起见,我们使用一个从HDFS获取输入并将其存储回HDFS的示例. 这一进程的运作方式如下:

  1. 当地的 工作的客户 为提交准备作业并将其发送到 资源管理器 (MR2) or 工作追踪 (MR1).
  2. 资源管理器 (MR2) / 工作追踪 (MR1)跨集群调度作业. 在MR2的情况下 应用程序主 是启动的,它将负责管理工作并在完成后终止它. 作业被发送到 节点管理 (MR2) or 任务跟踪器 (MR1). An InputSplitter 是用来分配 map 以最有效的方式跨集群执行任务.
  3. 每一个 报告经理 (MR2) / 任务跟踪器 (MR1)生成a map 任务,将进度更新发送到 应用程序主 (MR2) / 工作追踪 (MR1). 输出被划分,根据它需要去的减速机. 一个可选的 Combiner 也可以用于连接同一本地键的值.
  4. If a map 失败,则重试(最多重试定义的最大次数).
  5. After a map succeeds, 可以将带有输出的本地分区复制到各自的reduce节点(取决于分区)。.
  6. 当一个reduce任务接收到所有相关文件后,它会启动一个 那种阶段,在其中合并映射输出,保持键的自然顺序.
  7. 对于排序输出中的每个键,a reduce函数 ,并将输出存储到所需的接收器(在我们的示例中是HDFS)。. 因为执行它的节点通常也是 DataNode,将第一个副本写入本地磁盘.
  8. 如果减速机失败,将重新运行它.
  9. 在一个成功的操作链之后,临时文件将被删除 应用程序主 优雅地关闭.

问:大数据常用的NoSQL数据库主要有哪些类型?

近年来, 大数据的日益普及和相关性极大地增加了存储和处理大量数据的需求. 这导致了从更传统的关系数据库系统向其他方法和技术的转移, 通常被称为 NoSQL 数据库. NoSQL数据库通常比传统的SQL数据库简单,并且通常缺乏ACID事务功能, 从而使它们更加高效和可扩展.

这类数据库的分类法可以使用两个不同的空间创建. 虽然下表按数据模型对它们进行了分组,但在大数据的背景下, 一致性模型 在评估这些类型的数据存储的选项时,要考虑的另一个关键特性是什么.

NoSQL / BigData数据存储
Type描述优势缺点
分布式文件系统
(e.g., HDFS)
  • 保存数据的最简单方法之一就是使用分层文件系统. 它非常简单,而且通常也非常有效.
  • 最适合存储巨大的对象
  • 简单的模型使其易于调优以提高效率
  • 跨多个节点分布文件(并使用多个副本)有助于提高可伸缩性和吞吐量
  • 可以直接安装吗.g. using FUSE)
  • 只有一个非常基本的模式可用(目录结构)
  • 不适合多个小物体
  • 没有内置索引功能
  • 通常,如果发生单个更改,则必须重写整个文件
键值
(e.g., Riak, 亚马逊DynamoDB, Redis)
  • 将数据表示为键值对的集合.
  • 更复杂的数据模型可以在这样的结构之上实现.
  • 简单的概念
  • 易于按键对数据进行分区
  • Very simple schema (value is often just a blob; some datastores, 比如Redis, 提供更复杂的值类型(包括集合或映射)
  • 可以非常快,特别是基于内存的实现
  • 有许多实现可供选择
  • 有时候太简单了
  • 使得对公共数据进行分组变得困难
  • 不能在数据库端定义复杂的模式
宽栏
(e.g., BigTable, Apache Cassandra, Apache HBase, Apache Accumulo)
  • 受谷歌的启发 BigTable出版,将数据存储在能够存储大量动态列的记录中.
  • 一般来说,使用比较松散的模式来描述数据——定义表和主列(例如.g. columnfamily(在HBase的情况下),并且对存储在其中的数据具有灵活性, 它们是键值.
  • 写入速度非常快
  • 易于扩展
  • 使用灵活的模式将数据组织到表和列中
  • 易于存储带有时间戳的操作历史
  • 部分版本(e).g.(HBase)需要整个(通常是复杂的)Hadoop环境作为先决条件
  • 通常需要努力调优和优化性能参数
面向文档的 (e.g. MongoDB, CouchDB)
  • Designed around the concept of a "document"; i.e.以某种标准格式(如JSON、XML等)封装数据的单个对象.).
  • 与带有行的表不同,它对文档集合进行操作.
  • 独立于设计
  • 简单性在可伸缩性和性能方面带来了显著的提升
  • 许多真实世界的对象实际上是文档
  • 多种实现支持开箱即用的索引
  • 追踪任何一种关系都是困难的
  • 没有任何隐含模式会给客户机增加工作量

问:猪、蜂巢和黑斑羚是什么? 它们之间有什么区别?

Pig, Hive, 和Impala是Apache Hadoop生态系统中用于查询和处理数据的大数据框架的例子. 虽然最近出现了许多其他系统(值得注意的包括Facebook) Presto or 火花SQL),但在处理大数据挑战时,它们仍然被认为是“三大”. 下表提供了这三者的基本描述和比较.

比较概述:蜂巢、猪和黑斑羚
PigHiveImpala
2006年由雅虎研究公司推出. 在非常大的数据集上创建和执行map-reduce作业的特殊方式2007年由Facebook推出. 千兆字节规模的数据仓库框架.2012年由Cloudera推出. 在HDFS上大规模并行处理SQL查询引擎.
PigLatin,程序化,面向数据流HiveQL,类似sql的语法,声明性的SQL
运行MapReduce作业运行MapReduce作业Custom execution engine; does most of its operation in-memory
批处理或ETL批处理,特别查询Interactive-like
相对容易使用用户定义函数(UDF)进行扩展使用UDF进行扩展相对困难支持本地(c++)和Hive udf
查询的高容错性查询的高容错性如果一个节点失败,查询将被终止

问:什么是Apache特斯和Apache火花? 他们解决了什么样的问题(以及如何解决)?

MapReduce的一个问题是它不适合交互式处理. Moreover, 将一个MapReduce作业堆叠在另一个作业上(这是运行时常见的现实用例), 例如, Pig or Hive 查询)通常是非常无效的. 每个阶段结束后, 中间结果存储到HDFS, 只能作为输入被另一个作业接收, 等等......。. 它还需要在reduce阶段对数据进行大量的变换. 虽然有时它确实是必要的, 在许多情况下,实际的流程是可以优化的, 因为一些作业可以连接在一起,或者可以使用一些缓存,这将减少连接的需要,并实际上显着提高速度.

解决这些问题是创造的重要原因之一 Apache特斯 and Apache火花. 它们都一般化了MapReduce范式,并通过首先使用类定义流来执行整个作业 直接无环图(DAG). 在高层次的抽象中,每个顶点都是一个用户操作.e., 对输入数据执行某种形式的处理), 而每条边定义了与整个作业的其他步骤的关系(例如分组), 过滤, counting, 等等). 根据指定的DAG, 调度器可以决定哪些步骤可以一起执行(以及何时执行),哪些步骤需要在集群上推送数据. 此外,这两个 Tez and Spark 提供缓存形式,最大限度地减少在节点之间推送庞大数据集的需求.

然而,这两种技术之间存在一些显著的差异. Apache特斯 的创建更多的是作为Hadoop生态系统的一个额外元素,利用 YARN 并允许将其轻松包含在现有的MapReduce解决方案中. 它甚至可以很容易地与常规的MapReduce作业一起运行. Apache火花另一方面,它更像是一种处理大数据的新方法. 它增加了一些新的概念,如 弹性分布式数据集(rdd), 提供了一个经过深思熟虑的惯用API,用于定义作业的步骤(其中包含的操作远不止这些) map or reduce, such as joins or co-groups),并具有多个与缓存相关的特性. 代码被惰性地求值 直接无环图 是自动创建和优化的(相反,在 Tez,图形必须手动定义). 考虑到所有这些因素,代码 Spark 趋向于非常简洁. Spark 也是很重要的一部分 伯克利数据分析栈(BDAS).

问:什么是面向列的数据库? 什么时候用,为什么用?

用于数据库 按列排列磁盘上的数据存储, 而不是按行, 对于特定的操作,哪一个允许更有效的磁盘搜索. 在处理大型数据集时,这有很多好处, 包括更快的聚合相关查询, 高效的数据压缩, 并优化了跨所有(或许多)行的特定列中的值更新.

在实践中,面向列的数据库在操作上是否更高效会有所不同. 似乎为对象检索数据的操作会变慢, 需要大量的磁盘操作来从多个列收集数据以建立记录. 然而,这些整行操作通常是罕见的. 在大多数情况下,只检索有限的数据子集. 在rolodex应用程序中, 例如, 为了构建联系人列表,从许多行中收集名字和姓氏的操作比读取rolodex中单个实体的所有数据的操作要常见得多. 在将数据写入数据库时更是如此, 特别是当数据趋向于“稀疏”且有许多可选列时.

此外,按列组织的数据是一致的,往往压缩得很好.

出于这些原因, 尽管存在理论上的缺点,列存储已经证明了出色的实际性能.

问:什么是Lambda架构,如何使用它对实时更新的流执行分析?

大数据的一个常见用例是实时处理大量传入数据流. 根据实际问题和数据的性质,可能会提出多种解决方案. 一般来说,a λ架构 方法通常是解决这类挑战的有效方法.

核心概念是结果始终是输入数据(lambda)的函数。. 最终的解决方案应该像lambda函数那样工作, 与它要处理的数据量无关. To make this possible, the data is split into two parts; namely, raw data (它永远不会改变,只能追加)和 预先计算的数据. The 预先计算的数据 is further subdivided into two other groups; namely, the old 数据和 recent 数据(其中“旧的”和“最近的”是相对术语), 具体取决于操作环境).

有了这个区别,我们现在可以建立一个基于 λ架构 由以下三个主要组成部分组成:

  • 批处理层. 管理主数据集(一个不可变的, (仅追加原始数据集)和预计算任意查询函数(称为批处理视图).
  • 服务层. 索引批处理视图以支持低延迟的临时查询.
  • 速度层. 满足低延迟要求的所有请求. 使用快速和增量算法,速度层只处理最近的数据.

有许多工具可以应用于这些体系结构层. 例如,原始结果可以简单地存储在 HDFS and the 批处理意见 可能是预先计算出来的 Pig jobs. 类似地,使查询成为可能 批处理意见 实际上,可以使用以下技术对它们进行索引 Apache钻, Impala, ElasticSearch 或者其他很多人.

然而,速度层通常需要大量的努力. 幸运的是,有许多新技术也可以帮助解决这个问题. 最常用的一个是 Apache风暴 它使用抽象的 spouts and bolts 定义数据源及其操作,允许对流数据进行分布式处理.

最后一个要素是结合的结果 速度层 and the 服务层 在组装查询响应时.

的批处理能力 Hadoop 具有结果的实时可用性. 如果底层算法发生了变化,重新计算是很容易的 批处理意见 作为批处理,然后更新 速度层 把新版本考虑进去.

Wrap-up

毫无疑问, 大数据是当今软件行业面临的最强大、最普遍的挑战之一. 来自社交网络, 营销, 安全和执法, 对能够有效处理和处理大数据的大规模大数据解决方案的需求日益重要,并呈快速上升趋势.

在这个领域中真正的专业知识和熟练程度需要的远远超过学习特定技术的来龙去脉. 这需要一种理解 第一原理 level, 各种各样的技术挑战和复杂性,以及解决这些障碍的最有效的方法和解决问题的方法.

我们希望本文中提出的问题能够为您在寻找大数据工程师中的精英时“去芜取芽”提供有用的基础, 无论你需要他们全职还是兼职.

顶级大数据架构师需求量很大.

开始招聘