机器学习集训营---第五周总结
来源:互联网 发布:淘宝颜色分类自定义 编辑:程序博客网 时间:2024/05/22 07:49
本周主要讲大数据分析和处理,包含:
- hadoop 使用,map-reduce概念和使用
- spark与大数据处理
下面详细记录一下知识点:
hadoop
- HDFS 分布式文件系统
- 主从结构,一个namenoe和多个datanode, 分别对应独立的物理机器
- NameNode是主服务器,管理文件系统的命名空间和客户端对文件的访问操作。NameNode执行文件系统的命名空间操作,比如打开关闭重命名文件或者目录等,它也负责数据块到具体DataNode的映射
- 集群中的DataNode管理存储的数据。负责处理文件系统客户端的文件读写请求,并在NameNode的统一调度下进行数据块的创建删除和复制工作。
- NameNode是所有HDFS元数据的管理者,用户数据永远不会经过NameNode
- MapReduce 并行计算框架
- 主从结构,一个JobTracker和多个TaskTracker
- MapReduce是由一个单独运行在主节点上的JobTacker和运行在每个集群从节点上的TaskTracker共同组成的。JobTacker负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。
- MapReduce模型原理是利用一个输入的key/value对集合来产生一个输出的key/value队集合,使用Map和Reduce函数来计算
- MapReduce将大数据分解为成百上千小数据集,每个数据集分别由集群中的一个节点(一般是一台计算机)并行处理生成中间结果,后然这些中间结果又由大量的节点合并,形成最终结果
- echo "hello world">test1.txt
- echo是指回显示,可以理解为print, 大于符(>)为重定向,正常echo是显示在屏幕上,而用了重定向后,即内容显示在了text1.txt文件里。那这句话意思是,创建一个test1.txt文件,其内容是"hello world"。
- 移动计算:
- 程序自动分发到各hadoop结点上进行计算,然后通过一定机制把结果进行汇总最后返回出来,这称之为移动计算。显然,移动计算要比移动数据成本要低得多。
- google三驾马车:
- 也就是在google在2003年到2004年公布了关于GFS、MapReduce和BigTable三篇技术论文,即google的三驾马车。
- Hadoop的HDFS对就google的GFS,MapReduce对就google的MapReduce,Hadoop的HBase对应google的BigTable。
- (注:HBase是其于hadoop开发的类似数据操作的软件)。
- 到现在hadoop的核心价值总算摸清了,一是分布式存储,二是移动计算。
spark :
- RDD:(非常适合机器学习)
- 在Spark里,所有的处理和计算任务都会被组织成一系列Resilient Distributed Dataset(弹性分布式数据集,简称RDD)上的transformations(转换) 和 actions(动作)。
- RDD是一个包含诸多元素、被划分到不同节点上进行并行处理的数据集合,可以将RDD持久化到内存中,这样就可以有效地在并行操作中复用(在机器学习这种需要反复迭代的任务中非常有效)。在节点发生错误时RDD也可以自动恢复。
- SparkContext是用来链接
- 使用sc.parallelize,你可以把Python list,NumPy array或者Pandas Series、Pandas DataFrame转成Spark RDD
- 初始化RDD方法2
- 第2种方式当然是直接把文本读到RDD了
- 你的每一行都会被当做一个item,不过需要注意的一点是,Spark一般默认你的路径是指向HDFS的,如果你要从本地读取文件的话,给一个file://开头的全局路径。(服务器的本地)
- RDD transformation的那些事
- map() 对RDD的每一个item都执行同一个操作
- flatMap() 对RDD中的item执行同一个操作以后得到一个list,然后以平铺的方式把这些list里所有的结果组成新的list
- filter() 筛选出来满足条件的item
- distinct() 对RDD中的item去重
- sample() 从RDD中的item中采样一部分出来,有放回或者无放回
- sortBy() 对RDD中的item进行排序
- 比较炫酷的是,前面提到的Transformation,可以一个接一个地串联,
- resultRDD = (numbersRDD # In parentheses so we can write each
- .map(doubleIfOdd) # transformation in one line
- .filter(lambda x: x > 6)
- .distinct())
- 要结果的话调用 resultRDD.collect() ---确认量级是否会爆掉
- RDD间的操作
- rdd1.union(rdd2): 所有rdd1和rdd2中的item组合
- rdd1.intersection(rdd2): rdd1 和 rdd2的交集
- rdd1.substract(rdd2): 所有在rdd1中但不在rdd2中的item(差集)
- rdd1.cartesian(rdd2): rdd1 和 rdd2中所有的元素笛卡尔乘积
- 特别注意:
- Spark的一个核心概念是惰性计算。当你把一个RDD转换成另一个的时候,这个转换不会立即生效执行!!!
- Spark会把它先记在心里,等到真的需要拿到转换结果的时候,才会重新组织你的transformations(因为可能有一连串的变换)
- 这样可以避免不必要的中间结果存储和通信。
- RDD Actions
- collect(): 计算所有的items并返回所有的结果到driver端,接着 collect()会以Python list的形式返回结果
- first(): 和上面是类似的,不过只返回第1个item
- take(n): 类似,但是返回n个item
- count(): 计算RDD中item的个数
- top(n): 返回头n个items,按照自然结果排序
- reduce(): 对RDD中的items做聚合
- 有一个很有用的操作,我们试想一下,有时候我们需要重复用到某个transform序列得到的RDD结果。但是一遍遍重复计算显然是要开销的,所以我们可以通过一个叫做cache()的操作把它暂时地存储在内存中:
- 针对更复杂结构的transform和action
- reduceByKey(): 对所有有着相同key的items执行reduce操作
- groupByKey(): 返回类似(key, listOfValues)元组的RDD,后面的value List 是同一个key下面的
- sortByKey(): 按照key排序
- countByKey(): 按照key去对item个数进行统计
- collectAsMap(): 和collect有些类似,但是返回的是k-v的字典
个人感悟:
本周进入hard模式,至少对我来说是。但同样也发现了很多有趣的东西,像map-reduce和HDFS,以前只是听过,但这次是详细的学习,发现分布式存储和分布式计算优势很大,而且以后互联网的发展,数据量会越来越大,能发现大数据背后的价值变得很重要,毕竟现在还有很多公司做的一些决策都是凭个人感觉来做的,如果换成base on data,进步空间会很大。
现在看来之前学的课程分成三个部分,都可以单独找工作了:
- python 爬虫工程师
- python 数据分析工程师
- hadoop ,spark大数据工程师
但是我的定位是机器学习中的图像处理领域,而且要成为图像处理领域的专才。上面列出这些也要会,同时了解它们原理和能使用。我也非常了解自己的能力范围,所以目前的原则就是“专注自己热爱的领域,同时严格按照老师的课程安排去学习和做练习,但不能太在意细节和钻牛角尖,跟上课程进度”
阅读全文
0 0
- 机器学习集训营---第五周总结
- 机器学习集训营---第二周总结
- 机器学习集训营---第三周总结
- 机器学习集训营---第四周总结
- 机器学习 第五周 总结 知识点
- 机器学习-学习笔记 学习总结归纳(第五周)
- 暑假集训第五周
- 吴恩达机器学习笔记_第五周
- 机器学习第五周(一)
- 机器学习第五周(二)
- 周志华 《机器学习》之 第五章(神经网络)概念总结
- 机器学习第五章
- 启明星第五周学习总结
- 机器学习第五讲 最小二乘法
- Stanford机器学习---第五周.BP神经网络算法
- Coursera机器学习-第五周-Neural Network BackPropagation
- 斯坦福机器学习第五周(如何训练神经网络)
- coursera机器学习课程第五周——课程笔记
- javascript中获取当前时间戳和具体年月日时分秒
- 格雷码 hnustoj
- AngularJS结合dateTimePicker的使用-指令
- 详述支付网关的设计原则
- openldap用户认证
- 机器学习集训营---第五周总结
- Eclipse SVN 冲突解决的 四种方案
- firebreath与JS交互
- 这可能是史上最全的CSS自适应布局总结
- Android 故障GIF动画制作
- Java Web基础知识之Servlet(3):Session管理
- Java内存区域
- 8款最好用的Java集成开发工具(IDE)
- Python--安装与配置selenium