1.简述Hadoop的优点有哪些?Spark与之相比又有哪些优点?

hadoop是一个适合大数据的分布式存储和计算的平台。
它具有如下优点:

• 低成本:hadoop本身是运行在普通PC服务器组成的集群中进行大数据的分发及处理工作的,这些服务器集群是可以支持数千个节点的。
• 高效性:这也是hadoop的核心竞争优势所在,接受到客户的数据请求后,hadoop可以在数据所在的集群节点上并发处理。
• 可靠性:通过分布式存储,hadoop可以自动存储多份副本,当数据处理请求失败后,会自动重新部署计算任务。
• 扩展性:hadoop的分布式存储和分布式计算是在集群节点完成的,这也决定了hadoop可以扩展至更多的集群节点。
• 容错性:hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配

Hadoop的局限性和不足:

• 抽象层次低,需要手动编写mapper和reducer逻辑,使用上复杂
• 只提供Map和reduce两个操作,表达力欠缺
• 处理逻辑隐藏在代码细节中,没有整理逻辑
• 中间结果也存放在HDFS上,IO和通信开销大
• 时延高,只适用batch数据处理,对于交互式数据处理和实时数据处理的支持不够
• 对于迭代式数据处理性能比较差

Spark相比hadoop的优点有:

• 丰富的API,而后者只有map和reduce。
• 中间结果不存磁盘,而后者需要把中间结果写磁盘。
• 线程池模型减少task启动开销,而后者任务调度和启动开销很大。
• 能充分利用内存速度快优势,减少IO操作,而后者不能。
• 可以避免排序操作,而hadoop中map和reduce都需要排序。
• 适合迭代计算(机器学习算法),而后者不适合。

2.请简述您对MAP-REDUCE这一编程模型的理解

Hadoop包括分布式文件系统hdfs,和分布式计算框架,MapReduce是用于数据处理的一种编程模型,是hadoop的核心组件之一,可以通过mapreduce很容易在hadoop平台上进行分布式的计算编程。

MapRedeuce其处理过程主要分为两个步骤:

1、映射(Mapping)函数以Key/Value数据对作为输入,将输入数据经过业务逻辑计算产生若干仍旧以Key/Value形式表达的中间数。 MapReduce计算框架会自动将中间结果中具有相同Key值的记录聚合在一起,并将数据传送给Reduce函数内定义好的处理逻辑作为其输入值。
2、聚合(Reducing)函数接收到Map阶段传过来的某个Key值及其对应的若干Value值等中间数据,函数逻辑对这个Key对应的Value内容进行处理,一般是对其进行累加、过滤、转换等操作,生成Key/Value形式的结果,这就是最终的业务计算结果。

3.请简述RDD的含义,并写出针对RDD的两类操作(transformation与action),每类下至少三种的操作。

** RDD(Resilient Distributed Datasets),弹性分布式数据集是一个容错的、可以被并行操作的元素集合弹性分布数据集。是Spark的核心,也是整个Spark的架构基础。Spark是以RDD概念为中心运行的。**
RDD的一大特性是分布式存储,分布式存储在最大的好处是可以让数据在不同工作节点并行存储,以便在需要数据时并行运算。弹性指其在节点存储时,既可以使用内存,也可已使用外存,为使用者进行大数据处理提供方便
它的特性可以总结如下:
• 它是不变的数据结构存储
• 只读特性,维护DAG以便通过重新计算获得容错性
• 它是支持跨集群的分布式数据结构
• 可以根据数据记录的key对结构进行分区
• 提供了粗粒度的操作,且这些操作都支持分区
• 它将数据存储在内存中,从而提供了低延迟性

常用的transformation操作:

• map(func) 对调用map的RDD数据集中的每个element都使用func,然后返回一个新的RDD,这个返回的数据集是分布式的数据集
• filter(func) 对调用filter的RDD数据集中的每个元素都使用func,然后返回一个包含使func为true的元素构成的RDD
• flatMap(func) 和map差不多,但是flatMap生成的是多个结果,返回值是一个Seq(一个List)
• sample(withReplacement, fraction, seed) 从RDD中的item中采样一部分出来,有放回或者无放回
• union(otherDataset) 返回一个新的dataset,包含源dataset和给定dataset的元素的集合
• distinct([numTasks])) 对RDD中的item去重
• groupByKey([numTasks]): 返回(K,Seq[V]),也就是hadoop中reduce函数接受的key-valuelist
• reduceByKey(func, [numTasks]): 就是用一个给定的reduce func再作用在groupByKey产生的(K,Seq[V]),比如求和,求平均数
• sortByKey([ascending], [numTasks]) 按照key来进行排序,是升序还是降序,ascending是boolean类型
• join(otherDataset, [numTasks]) 当有两个KV的dataset(K,V)和(K,W),返回的是(K,(V,W))的dataset,numTasks为并发的任务数
• cartesian(otherDataset) 笛卡尔积就是m*n
• intersection(otherDataset): 交集
• substract(otherDataset): 差集
• sortBy(keyfunc, ascending=True, numPartitions=None): Sorts this RDD by the given keyfunc

常用的action操作:

• reduce(func): 对RDD中的items做聚合
• collect(): 计算所有的items并返回所有的结果到driver端,接着 collect()会以Python list的形式返回结果
• count(): 返回的是dataset中的element的个数
• first(): 和上面是类似的,不过只返回第1个item
• take(n): 类似,但是返回n个item
• top(n): 返回头n个items,按照自然结果排序
• countByKey(): 返回的是key对应的个数的一个map,作用于一个RDD
• foreach(): 对dataset中的每个元素都使用func
• takeSample(): 指定采样个数,返回相应的数目
• saveAsTextFile(path): 把dataset写到一个text file中,或者hdfs,或者hdfs支持的文件系统中,spark把每条记录都转换为一行记录,然后写到file中

4.Spark内置了机器学习库mllib,请写出使用该库完成一项机器学习任务的通用步骤

• (注意:仅步骤即可,如对该库不了解,可GOOGLE)
• 1、数据探索
拿到数据以后,一般不会急于创建模型、训练模型,在这之前,需要对数据、对需求或机器学习的目标进行分析,尤其对数据进行一些必要的探索,如了解数据的大致结构、数据量、各特征的统计信息、整个数据质量情况、数据的分布情况等。为了更好体现数据分布情况,数据可视化是一个不错方法。
• 2、预处理数据
通过对数据探索后,可能发现不少问题:如存在缺失数据、数据不规范、数据分布不均衡、存在奇异数据、有很多非数值数据、存在很多无关或不重要的数据等等。这些问题的存在直接影响数据质量,为此,数据预处理工作应该就是接下来的重点工作,数据预处理是机器学习过程中必不可少的重要步骤,特别是在生产环境中的机器学习,数据往往是原始、为加工和处理过,数据预处理常常占据整个机器学习过程的大部分时间。数据预处理过程中,一般包括数据清理、数据转换、规范数据、特征选择等等工作。
• 3、训练模型
在模型选择时,一般不存在某种对任何情况都表现很好的算法(这种现象又称为没有免费的午餐)。因此在实际选择时,一般会选用几种不同方法来训练模型,然后比较它们的性能,从中选择最优的这个。当然,在比较不同模型之前,我们需要先确认衡量性能的指标,对分类问题常用的是准确率或ROC曲线,对回归连续性目标值问题一般采用误差来评估。训练模型前,一般会把数据集分为训练集和测试集,或对训练集再细分为训练集和验证集,从而对模型的泛化能力进行评估。
• 4、评估模型与优化模型
使用训练数据构建模型后,通常使用测试数据对模型进行测试,测试模型对新数据的测试。如果我们对模型的测试结果满意,就可以用此模型对以后的进行预测;如果我们测试结果不满意,我们可以优化模型,优化的方法很多,其中网格搜索参数是一种有效方法,当然我们也可以采用手工调节参数等方法。如果出现过拟合,尤其是回归类问题,我们可以考虑正则化方法来降低模型的泛化误差。
请写出完成以下任务的HDFS对应的文件(夹)操作命令

1. 在hdfs根目录下新建/sxy-new文件夹

• 把本地文件test.txt test2.txt放入该文件夹
• 从hdfs上取下文件old.txt(假定在/sxy-new下有该文件)
• 从hdfs上取下/sxy-new中所有内容,并合成一个本地文件
• 把/sxy-new拷贝到/tmp下后,删除/sxy-new文件夹
hadoop fs -mkdir /sxy-new
hadoop fs -put test.txt test2.txt /sxy-new
hadoop fs -get /sxy-new/old.txt old_from_hadoop.txt
hadoop fs -getmerge /sxy-new merge.txt
hadoop fs -cp /sxy-new /temp, hadoop fs -rmr /sxy-new

HDFS常见命令
HDFS上的数据,分布在不同的地方,我们有一些命令可以用于 增加/查看/删除 等数据操作。

#显示/下的所有文件夹信息
hadoop fs -ls /

#递归显示所有文件夹和子文件(夹)
hadoop fs -lsr

#创建/user/hadoop目录
hadoop fs -mkdir /user/hadoop

#把a.txt放到集群/user/hadoop/文件夹下
hadoop fs -put a.txt /user/hadoop/

#把集群上的/user/hadoop/a.txt拉到本地/目录下
hadoop fs -get /user/hadoop/a.txt /

#集群上复制文件
hadoop fs -cp src dst

#集群上移动文件
hadoop fs -mv src dst

#查看集群上文件/user/hadoop/a.txt的内容
hadoop fs -cat /user/hadoop/a.txt

#删除集群上/user/hadoop/a.txt文件
hadoop fs -rm /user/hadoop/a.txt

#删除目录和目录下所有文件
hadoop fs -rmr /user/hadoop/a.txt

#与hadoop fs -put功能类似
hadoop fs -copyFromLocal localsrc dst

#将本地文件上传到hdfs,同时删除本地文件
hadoop fs -moveFromLocal localsrc dst

MapReduce学习一些笔记相关推荐

  1. MapReduce学习笔记(1)

    MapReduce学习笔记 1. MapReduce编程模型- Hadoop架构 1.1 Map阶段 1.2 Reduce阶段 1.3 MapReduce模型图 2. MapReduce编程示例 2. ...

  2. 《Data-Intensive Text Processing with mapReduce》读书笔记之一:前言

    暑假闲得蛋痒,混混沌沌,开始看<Data-Intensive Text Processing with mapReduce>,尽管有诸多单词不懂,还好六级考多了,虽然至今未过:再加上自己当 ...

  3. python神经结构二层_《python深度学习》笔记---8.3、神经风格迁移

    <python深度学习>笔记---8.3.神经风格迁移 一.总结 一句话总结: 神经风格迁移是指将参考图像的风格应用于目标图像,同时保留目标图像的内容. 1."神经风格迁移是指将 ...

  4. tensorflow学习函数笔记

    为什么80%的码农都做不了架构师?>>>    [TensorFlow教程资源](https://my.oschina.net/u/3787228/blog/1794868](htt ...

  5. CSDN技术主题月----“深度学习”代码笔记专栏

    from: CSDN技术主题月----"深度学习"代码笔记专栏 2016-09-13 nigelyq 技术专题 Hi,各位用户 CSDN技术主题月代码笔记专栏会每月在CODE博客为 ...

  6. 深度学习-最优化笔记

    深度学习-最优化笔记 作者:杜客 链接:https://zhuanlan.zhihu.com/p/21360434 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 译 ...

  7. 深度学习入门教程UFLDL学习实验笔记三:主成分分析PCA与白化whitening

     深度学习入门教程UFLDL学习实验笔记三:主成分分析PCA与白化whitening 主成分分析与白化是在做深度学习训练时最常见的两种预处理的方法,主成分分析是一种我们用的很多的降维的一种手段,通 ...

  8. 深度学习入门教程UFLDL学习实验笔记一:稀疏自编码器

     深度学习入门教程UFLDL学习实验笔记一:稀疏自编码器 UFLDL即(unsupervised feature learning & deep learning).这是斯坦福网站上的一篇 ...

  9. 学习LOAM笔记——特征点提取与匹配

    学习LOAM笔记--特征点提取与匹配 学习LOAM笔记--特征点提取与匹配 1. 特征点提取 1.1 对激光点按线束分类 1.2 计算激光点曲率 1.3 根据曲率提取特征点 2. 特征点匹配 2.1 ...

  10. 学习MSCKF笔记——后端、状态预测、状态扩增、状态更新

    学习MSCKF笔记--后端.状态预测.状态扩增.状态更新 学习MSCKF笔记--后端.状态预测.状态扩增.状态更新 1. 状态预测 2. 状态扩增 3. 状态更新 学习MSCKF笔记--后端.状态预测 ...

最新文章

  1. datatable java实现分页_jQuery Datatable - 使用Php的服务器端处理数据分页
  2. InfluxDB 开源分布式时序、事件和指标数据库
  3. 赛程一览 | 2019 上海国际创客大赛
  4. python 更新数据库历史_python 实现数据库中数据添加、查询与更新的示例代码
  5. POJ2941 SDUT2371Homogeneous squares
  6. 【RabbitMQ】 WorkQueues
  7. 敏捷开发系列学习总结(12)——给Scrum Master的十个建议,你值得拥有
  8. .NET Compact Framework 多线程下的等待事件
  9. Filecoin网络目前总质押量约为2294万枚FIL
  10. js页面重定向跳转代码总结(待续)
  11. Fiddler——模拟限速
  12. ubutun下虚拟环境的配置
  13. HOMAG工控机维修西门子IPC627D维修HG-A.1.0
  14. Androidstudio开发ARcore
  15. 树莓派4B静态IP与屏幕分辨率设置
  16. matlab 绘图颜色参考 linspace
  17. Codeforces - Robot Rapping Results Report
  18. 有些事情让感情无处安放
  19. 尝试CornerNet-Lite进行目标识别并嵌入ROS
  20. 每日一题2021/5/22:黑板异或

热门文章

  1. 德怀特·艾森豪威尔(1890-1969)美国第34任总统,陆军五星上将。
  2. iOS安装脱壳后的ipa
  3. 管理部门使用计算机属于固定资产核算吗,固定资产核算管理内容
  4. android 7.0 调试日志,Android软件调试记录
  5. LoRa点对点系统4 进程通信
  6. Google Map MarkerCluster 点聚合使用简介
  7. caffe:最优化方法
  8. NOIWC2018滚粗记
  9. Hadoop开发相关问题
  10. php radio是什么意思,radio是什么意思_radio在线翻译_英语_读音_用法_例句_海词词典...