MapReduce

敖丙8年经验读者,疫情期间面20家大厂总结

谁都会走 提交于 2020-11-01 07:20:36
本文来自一个8年大数据老兵的面试经历投稿,我完完整整的看了一遍,真的很细很细,疫情期间面试各种失败各种总结,最后拿到Offer实属不易,精神很值得大家学习 前言 我不是什么大牛,我只是一个有八年工作经验的互联网老兵,既没有非常亮眼的学历,也没有牛逼大厂的履历。 这个冬天,在孩子得病从急诊转住院的时候,我得到了年前将被优化的消息,作为家里唯一经济来源的我整个人蒙了,一时间茫然和无助差点毁了我。 最后我还是和家人如实说了,受到了他们的极大的鼓励,也找到了重新开始的勇气。 可惜这场疫情来的如此凶猛,职位少、要求高、电话面试、视频面试、在线coding、屡战屡败、屡败屡战,构成了我这两个月的常规生活。 我一开始也焦虑、茫然,甚至对自己的能力和工作经验深深怀疑。 后来经过几个好朋友的鼓励打气,也看了敖丙的很多面试文章,认真总结自己面试中不足的地方,查漏补缺,终于在这周确定了offer。(这是原话,我真没瞎加哈哈) 接下来我就我之前面过的腾讯、高德、京东、美团、饿了么、快手、字节跳动、滴滴、360金融、跟谁学、网联清算、华晨宝马、快看漫画、陌陌、脉脉等等等公司的面试题做一下总结,权当抛砖引玉,希望对大家有帮忙。 面试问题汇总 基础问题 linux和网络基础 (1)linux系统内核态和用户态是什么,有什么区别? (2)BIO、NIO、AIO都是什么,有什么区别? (3)TCP和UDP的区别?

大数据Hadoop生态圈介绍

∥☆過路亽.° 提交于 2020-10-31 10:02:20
一.Hadoop简介 Hadoop是一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。简单地说来,Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。 Hadoop的核心组件是HDFS、MapReduce。随着处理任务不同,各种组件相继出现,丰富Hadoop生态圈,目前生态圈结构大致如图所示: 二.Hadoop生态圈组件介绍 1.HDFS(分布式文件系统) HDFS是整个hadoop体系的基础,负责数据的存储与管理。HDFS有着高容错性(fault-tolerant)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。 client:切分文件,访问HDFS时,首先与NameNode交互,获取目标文件的位置信息,然后与DataNode交互,读写数据 NameNode:master节点,每个HDFS集群只有一个,管理HDFS的名称空间和数据块映射信息,配置相关副本信息,处理客户端请求。 DataNode:slave节点,存储实际数据,并汇报状态信息给NameNode,默认一个文件会备份3份在不同的DataNode中,实现高可靠性和容错性。

你真知道如何高效用mapPartitions吗?

烈酒焚心 提交于 2020-10-31 07:31:35
1. mappartition简介 首先,说到mapPartitions大家肯定想到的是map和MapPartitions的对比。大家都知道mapPartition算子是使用一个函数针对分区计算的,函数参数是一个迭代器。而map只针对每条数据调用的,所以存在访问外部数据库等情况时mapParititons更加高效。 mapPartitions函数: /** * Return a new RDD by applying a function to each partition of this RDD. * * `preservesPartitioning` indicates whether the input function preserves the partitioner, which * should be `false` unless this is a pair RDD and the input function doesn't modify the keys. */ def mapPartitions[U: ClassTag]( f: Iterator[T] => Iterator[U], preservesPartitioning: Boolean = false): RDD[U] = withScope { val cleanedF = sc.clean(f)

Spark RDD

妖精的绣舞 提交于 2020-10-31 00:40:37
转自:https://blog.csdn.net/u011564172/article/details/53310530 概要 RDD是为了处理迭代算法和数据发掘应运而生的,keep数据在内存,显著提升性能。 RDD基于lineage实现容错,而不是shared state的update。 简介 背景 原有的并行框架MapReduce无法有效利用内存,并且不能重复利用迭代计算的中间结果,而是将中间结果存储在磁盘上,增加了数据备份(hdfs默认为3份)开销,磁盘IO,序列化的时间,迭代计算在数据挖掘和图算法中很常见,例如k-means,逻辑回归,PageRank。 挑战 RDD设计中的主要挑战是提供高效的“fault tolerance”编程接口,现有的对于内存存储的容错都是细粒度的对于可变状态的update,具体为跨机器的数据备份(replicate data cross machine)或者跨机器的日志更新(log updates cross machine),需要跨机器传输备份数据,效率低。不同的RDD提供基于粗粒度的transformations(例如map,filter等)构建的lineage(血统),如果一个RDD丢失数据,则可根据lineage找出丢失数据的来源,重新计算,达到容错,而不需要数据备份。 RDD(Resilient Distributed Datasets

数字货币引发数字化市场与算法边界探讨

☆樱花仙子☆ 提交于 2020-10-30 12:55:41
   大数据文摘投稿作品    作者: 袁峻峰   马云在10月24日,在中国金融四十人论坛(CF40)联合各组委会成员机构举办的第二届外滩金融峰会上提到数字货币,发表了非常高远的观点:“拿数字货币来说,如果用未来的眼光打造30年后世界所需的金融体系,数字货币可能是非常重要的核心。... 这个数字货币不是从历史上去找,不应该从监管角度去找,不应该从研究机构去找,而是从市场去找,从需求去找,从未来去找...因为数字货币体系是一个技术问题,但又不仅仅是技术问题,更是一个解决未来问题的方案,数字货币可能会重新定义货币,尽管货币的主要功能仍然在,但是一定会重新定义货币。”   货币的本质是什么?   很多关于货币的书都喜欢举个石币岛的例子,位于西太平洋的雅浦岛的土著居民,居民在土地和房屋的买卖交易时,是用直径达4米、最重5吨的石材当货币使用。当一宗交易结束,受石币重量所限,这些石币并不用搬离前所有者的家,而是在石币上作标记表示所有权已经转移。只要大家认可这石币的所有权谁属,便承认了财富的转移。   岛上有一户大财主,所有人都承认他们家是首富,但没有人见过他们家里的石币。他们家的财产是一块巨大的石币,具体大小只有祖辈知道,因为这块石币一直沉睡在海底。因为同去的大伙都见证了这块巨大石币的价值和去处,所以大伙都为他作证。虽然那块石币不在岛上,依然不影响石币的价值。   对于雅浦岛居民来说

Hadoop 学习笔记 05 之 MapReduce 浅析

本小妞迷上赌 提交于 2020-10-30 07:37:43
阅读文本大概需要 4 分钟。 简介: 每一项新技术都是为了解决某个痛点,随着数据量指数型得增长,面对海量的数据技术,虽然存储用 Hadoop 的 HDFS 文件系统解决,但没初加工的数据如同一堆刚从矿场运出来的矿砂,价值度低。 那么该如何处理海量的数据呢,比如分析某个时间段订单量 / 某个地区的几十年的温度?为了解决这个问题,不得不介绍 Map reduce 这个框架。 一 、Mapreduce 简单介绍 官话: MapReduce 是一个分布式计算模型框架,由两个阶段组成:Map和Reduce。 主要用于搜索领域,解决海量数据的计算问题,只需要实现 Map() 和 Reduce() 两个函数即可。 通俗理解: 好比家里一堆家务活,全部给一个人做可能一整天都弄不完,于是分工,老二(Map)负责清洗碗筷,老幺(Map)负责拖地,于是很快就搞定了;老大负责检查(Reduce 汇总)。这就是MapReduce 把任务分解再汇总。 二、Mapreduce 工作(流程)原理 我分两个版本解读,第一个是正式版,第二个是故事版 正式版例子 (中文版) (英文版) 粗略的讲,MapReduce 的工作流程分为: map task ( Map 任务) 与 reduce task (Reduce 任务)。 map task: 1、把一个(或多个)需要处理的文件(block) 按 spill

本文将大数据学习门槛降到了地平线

做~自己de王妃 提交于 2020-10-30 07:16:06
Hadoop介绍 Hadoop-大数据开源世界的亚当夏娃。 核心是HDFS数据存储系统,和MapReduce分布式计算框架。 HDFS 原理是把大块数据切碎, 每个碎块复制三份,分开放在三个廉价机上,一直保持有三块可用的数据互为备份。使用的时候只从其中一个备份读出来,这个碎块数据就有了。 存数据的叫datenode(格子间),管理datenode的叫namenode(执伞人)。 MapReduce 原理是大任务先分堆处理-Map,再汇总处理结果-Reduce。分和汇是多台服务器并行进行,才能体现集群的威力。难度在于如何把任务拆解成符合MapReduce模型的分和汇,以及中间过程的输入输出<k,v> 都是什么。 单机版Hadoop介绍 对于学习hadoop原理和hadoop开发的人来说,搭建一套hadoop系统是必须的。但 配置该系统是非常头疼的,很多人配置过程就放弃了。 没有服务器供你使用 这里介绍一种 免配置的单机版 hadoop安装使用方法,可以简单快速的跑一跑hadoop例子辅助学习、开发和测试。 要求笔记本上装了Linux虚拟机,虚拟机上装了docker。 安装 使用docker下载sequenceiq/hadoop-docker:2.7.0镜像并运行。 [root@bogon ~]# docker pull sequenceiq/hadoop-docker:2.7.0 2

流数据处理

我的梦境 提交于 2020-10-30 06:46:57
大数据界很早以前就意识到了批处理的不足,实际应用中对于实时查询和流处理的需求越来越迫切。近年来涌现出了很多解决方案,像Twitter的Storm,Yahoo的S4,Cloudera的Impala,Apache Spark, 和 Apache Tez 等。本文试着去研究这些流式处理技术,溯寻这些技术与批量处理以及OLTP/OLAP之间的关联,并探讨如何用一个统一的查询引擎来同时支持流处理、批处理和OLAP。 在Grid Dynamics(作者工作的公司名),我们需要建立一个每天要处理80亿条数据的流式数据处理系统,并且要有良好的容错性和严格的事务约束,数据不允许丢失或者重复。这个系统要作为对已有的基于hadoop系统的补充,hadoop系统的数据延迟以及维护成本都太高了。这个需求以及系统本身都是极具通用性和典型性的,我们提出了一个模型来来抽象这类问题。 工作环境如下图: 可以看出,这是一个非常典型的场景:分布在多个数据中心的应用产生数据,然后被采集系统传递到hdfs上,用hadoop系列工具(MapReduce, Pig, Hive)对原始数据进行聚合和分析,结果储存在hdfs或者NoSQL里,再导入到OLAP数据库或者提供给各种应用使用。我们现在要增加一个流处理引擎(如下图所示),可以对数据进行预处理,这样可以减少hadoop上原始数据的数量并减少重量级批处理作业的数量

CDH-Namenode-Yarn-Hbase-Hive的HA配置-Flink on yarn配置

别说谁变了你拦得住时间么 提交于 2020-10-28 08:41:28
配置namenode HA高可用 使用cloudera manager方式安装,namenode是单节点方式,需要额外配置成HA。配置NameNode HA的两点前提条件: (1)至少是3个或3个以上奇数个JournalNode,否则将无法继续配置NameNode HA. (2)配置NameNode需要有Zookeeper. 在hdfs - 操作 -选择启用HA 填写nameservice名称,自定义即可: 选择另外一台服务器安装namenode ,三个或5个节点安装journalnode。 配置namenode,journalnode数据目录,如/data1/dfs/nn,/data1/dfs/jn 继续等待命令执行完成,按照向导操作即可 启用HA成功 配置yarn HA高可用 使用管理员用户登录Cloudera Manager的Web管理界面,进入YARN服务 点击“启用High Avaiability”,选择ResourceManager主机 点击“继续”,启用ResourceManager HA 点击“完成”,查看YARN服务实例 可以看到YARN的ResourceManager实例为两个,一个是活动状态,一个是备用状态,至此已完成YARN HA的启用,那么接下来就测试下YARN HA功能的可用性。 Yarn HA功能可用性测试 ResourceManager服务状态

Hadoop 中的两表join

此生再无相见时 提交于 2020-10-28 05:54:22
作为数据分析中经常进行的join 操作,传统DBMS 数据库已经将各种算法优化到了极致,而对于hadoop 使用的mapreduce 所进行的join 操作,去年开始也是有各种不同的算法论文出现,讨论各种算法的适用场景和取舍条件,本文讨论hive 中出现的几种join 优化,然后讨论其他算法实现,希望能给使用hadoop 做数据分析的开发人员提供一点帮助. Facebook 今年在yahoo 的hadoop summit 大会上做了一个关于最近两个版本的hive 上所做的一些join 的优化,其中主要涉及到hive 的几个关键特性: 值分区 , hash 分区 , map join , index , Common Join 最为普通的join策略,不受数据量的大小影响,也可以叫做reduce side join ,最没效率的一种join 方式. 它由一个mapreduce job 完成. 首先将大表和小表分别进行map 操作, 在map shuffle 的阶段每一个map output key 变成了table_name_tag_prefix + join_column_value , 但是在进行partition 的时候它仍然只使用join_column_value 进行hash. 每一个reduce 接受所有的map 传过来的split , 在reducce 的shuffle