At Toptal, 我们会对我们的大数据架构师进行全面筛选,以确保我们只为您匹配最优秀的人才. 在200多个中,每年有5000人申请加入Toptal网络, 只有不到3%的人能达标. 你将与工程专家(而不是一般的招聘人员或人力资源代表)一起了解你的目标, technical needs, and team dynamics. 最终的结果是:经过专家审查的人才从我们的网络,定制匹配,以满足您的业务需求.
Big Data 是一个非常广泛的领域吗, 通常由数据科学家组成的混合团队来解决, data analysts, software engineers, and statisticians. 因此,找到一个精通该领域的人,而不是微软Azure专家,是极不可能和罕见的. Rather, 人们很可能会寻找具有特定子领域专业知识的多个个人. 因此,本指南在较高层次上分为两部分:
说到大数据和数据管理, 具有相关算法的基础知识和工作经验, techniques, big data platforms, 方法很重要. Generally speaking, 掌握这些领域比成为一组特定软件语言或工具的专家需要更多的时间和技能. As such, 在这些领域拥有专业知识的软件工程师很难找到,而且对您的团队非常有价值. 下面的问题可以帮助你衡量这些专业知识.
问:给定一个未知长度的数据流, 并且要求创建一个固定大小的样本, 如何在整个数据集上执行一个简单的随机抽样? (i.e., 给定数据流中的N个元素, 你如何产生一个含有k个元素的样本, where N > k, 每个元素都有1/N的机会被包含在样品中?
然而与此同时, “三选二”的约束确实在某种程度上过度简化了这三个属性之间的紧张关系. 通过显式处理分区, for example, 设计人员可以优化一致性和可用性, 从而实现三者之间的某种权衡. 尽管当存在分区时,设计人员确实需要在一致性和可用性之间做出选择, 在处理分区和从中恢复方面有很大的灵活性.
表现出色的能力, 独立于缓存大小,没有特定于缓存大小的调优, 缓参无关方法的主要优点是什么. However, 重要的是要认识到,缺乏任何特定于缓存大小的调优也意味着缓存无关算法可能不如缓存感知算法(例如缓存感知算法)执行得好.e.(调优到特定缓存大小的算法). 缓参无关方法的另一个缺点是,它通常会增加数据结构的内存占用, 这可能会进一步降低性能. 有趣的是尽管, in practice, 缓存无关算法的性能通常与缓存感知算法惊人地相似, 让它们在大数据处理中变得更加有趣和相关.
大数据技术
These days, it’s not only about finding a single tool to get the job done; rather, 它是关于建立一个可扩展的架构来有效地收集, process, 并查询大量的数据. 具备强大的大数据算法基础知识, techniques, and approaches, 大数据专家将能够从不断增长的技术领域中使用工具,这些工具可用于利用大数据提取可操作的信息. 下面的问题可以帮助评估候选人在这方面的专业知识.
The local Job Client 为提交准备作业并将其发送到 Resource Manager (MR2) or Job Tracker (MR1).
Resource Manager (MR2) / Job Tracker (MR1)跨集群调度作业. 在MR2的情况下 Application Master 是启动的,它将负责管理工作并在完成后终止它. The job is sent to Node Managers (MR2) or Task Trackers (MR1). An InputSplitter 是用来分配 map 以最有效的方式跨集群执行任务.
Each of the Note Managers (MR2) / Task Trackers (MR1) spawns a map 任务,将进度更新发送到 Application Master (MR2) / Job Tracker (MR1). 输出被划分,根据它需要去的减速机. An optional Combiner 也可以用于连接同一本地键的值.
If a map 失败,则重试(最多重试定义的最大次数).
After a map succeeds, 可以将带有输出的本地分区复制到各自的reduce节点(取决于分区)。.
In recent years, 大数据的日益普及和相关性极大地增加了存储和处理大量数据的需求. 这导致了从更传统的关系数据库系统向其他方法和技术的转移, commonly known as NoSQL databases. NoSQL数据库通常比传统的SQL数据库简单,并且通常缺乏ACID事务功能, 从而使它们更加高效和可扩展.
这类数据库的分类法可以使用两个不同的空间创建. 虽然下表按数据模型对它们进行了分组,但在大数据的背景下, consistency model 在评估这些类型的数据存储的选项时,要考虑的另一个关键特性是什么.
MapReduce的一个问题是它不适合交互式处理. Moreover, 将一个MapReduce作业堆叠在另一个作业上(这是运行时常见的现实用例), for example, Pig or Hive 查询)通常是非常无效的. After each stage, 中间结果存储到HDFS, 只能作为输入被另一个作业接收, and so on. 它还需要在reduce阶段对数据进行大量的变换. 虽然有时它确实是必要的, 在许多情况下,实际的流程是可以优化的, 因为一些作业可以连接在一起,或者可以使用一些缓存,这将减少连接的需要,并实际上显着提高速度.
解决这些问题是创造的重要原因之一 Apache Tez and Apache Spark. 它们都一般化了MapReduce范式,并通过首先使用类定义流来执行整个作业 直接无环图(DAG). 在高层次的抽象中,每个顶点都是一个用户操作.e., 对输入数据执行某种形式的处理), 而每条边定义了与整个作业的其他步骤的关系(例如分组), filtering, counting, and so on). 根据指定的DAG, 调度器可以决定哪些步骤可以一起执行(以及何时执行),哪些步骤需要在集群上推送数据. Additionally, both Tez and Spark 提供缓存形式,最大限度地减少在节点之间推送庞大数据集的需求.
然而,这两种技术之间存在一些显著的差异. Apache Tez 的创建更多的是作为Hadoop生态系统的一个额外元素,利用 YARN 并允许将其轻松包含在现有的MapReduce解决方案中. 它甚至可以很容易地与常规的MapReduce作业一起运行. Apache Spark另一方面,它更像是一种处理大数据的新方法. 它增加了一些新的概念,如 弹性分布式数据集(rdd), 提供了一个经过深思熟虑的惯用API,用于定义作业的步骤(其中包含的操作远不止这些) map or reduce, such as joins or co-groups),并具有多个与缓存相关的特性. 代码被惰性地求值 直接无环图 是自动创建和优化的(相反,在 Tez,图形必须手动定义). 考虑到所有这些因素,代码 Spark 趋向于非常简洁. Spark 也是很重要的一部分 伯克利数据分析栈(BDAS).
问:什么是面向列的数据库? 什么时候用,为什么用?
用于数据库 按列排列磁盘上的数据存储, rather than by row, 对于特定的操作,哪一个允许更有效的磁盘搜索. 在处理大型数据集时,这有很多好处, 包括更快的聚合相关查询, 高效的数据压缩, 并优化了跨所有(或许多)行的特定列中的值更新.
大数据的一个常见用例是实时处理大量传入数据流. 根据实际问题和数据的性质,可能会提出多种解决方案. In general, a Lambda Architecture 方法通常是解决这类挑战的有效方法.
核心概念是结果始终是输入数据(lambda)的函数。. 最终的解决方案应该像lambda函数那样工作, 与它要处理的数据量无关. To make this possible, the data is split into two parts; namely, raw data (它永远不会改变,只能追加)和 pre-computed data. The pre-computed data is further subdivided into two other groups; namely, the old data and the recent 数据(其中“旧的”和“最近的”是相对术语), 具体取决于操作环境).