BigData--MapReduce入门
MapReduce入门一、MapReduce概述MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。
MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。
1、优点
MapReduce易于编程
良好的扩展性
高容错性
适合海量数据的离线处理
2、缺点
不擅长实时计算,无法像MySQL一样,在毫秒或者秒级内返回结果。
不擅长流式计算,MapReduce的输入数据是静态。
不擅长DAG(有向图)计算,如果每个MapReduce作业的输出结果都写入到磁盘,会造成大量的磁盘IO,导致性能非常的低下。
3、MapReduce核心编程思想
1)分布式的运算程序往往需要分成至少2个阶段。
2)第一个阶段的MapTask并发实例,完全并行运行,互不相干。
3)第二个阶段的ReduceTask并发实例互不相干,但是他们的数据依赖于上一个阶段的所有MapTask并发实例的输出。
4)MapReduce编程模型只能包含一个Map阶段和一个Reduce阶段,如果用户的业务 ...
BigData--Hadoop2.x新特性之HA
HDFS HA高可用
Hadoop2.X的两大新特性:YARN和HA
1、概述HA即High Available,高可用的意思
NameNode主要在以下两个方面影响HDFS集群
12345NameNode机器发生意外,如宕机,集群将无法使用,直到管理员重启NameNode机器需要升级,包括软件、硬件升级,此时集群也将无法使用HDFS HA功能通过配置Active/Standby两个NameNodes实现在集群中对NameNode的热备来解决上述问题。如果出现故障,如机器崩溃或机器需要升级维护,这时可通过此种方式将NameNode很快的切换到另外一台机器。
2、HDFS-HA工作机制
通过双NameNode消除单点故障
3、HDFS-HA工作要点
元数据管理方式需要改变
1234567内存中各自保存一份元数据;Edits日志只有Active状态的NameNode节点可以做写操作;两个NameNode都可以读取Edits;共享的Edits放在一个共享存储中管理(qjournal和NFS两个主流实现);
需要一个状态管理功能模块
1实现了一个zkfailover,常驻在每一 ...
BigData--Hadoop技术
一、Hadoop组成
1、HDFS架构
1)NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等
2)DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。
3)Secondary NameNode(2nn):用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照
2、YARN架构
3、MapReduce架构
1)Map阶段并行处理输入数据
2)Reduce阶段对Map结果进行汇总
4、大数据技术生态体系
二、HDFS(Hadoop Distribution File System)1、优点
2、缺点
3、组织架构
三、HDFS的数据流1、HDFS写数据流程
1)客户端通过Distributed FileSystem模块向NameNode请求上传文件,NameNode检查目标文件是否已存在,父目录是否存在。
2)NameNode返回是否可以上传。
3)客户端请求第一个 Block上传到哪几个DataNode服务器上。
4)NameNode ...
TensorFlow2.X学习笔记(8)--TensorFlow高阶API之构建模型、训练模型
一、构建模型
使用Sequential按层顺序构建模型
使用函数式API构建任意结构模型
继承Model基类构建自定义模型。
1、Sequential按层顺序创建模型(方便,网络显示清晰)1234567891011121314151617tf.keras.backend.clear_session()model = models.Sequential()model.add(layers.Embedding(MAX_WORDS,7,input_length=MAX_LEN))model.add(layers.Conv1D(filters = 64,kernel_size = 5,activation = "relu"))model.add(layers.MaxPool1D(2))model.add(layers.Conv1D(filters = 32,kernel_size = 3,activation = "relu"))model.add(layers.MaxPool1D(2))model.add(layers.Flatten())model ...
TensorFlow2.X学习笔记(7)--TensorFlow中阶API之losses、metrics、optimizers、callbacks
一、损失函数一般来说,监督学习的目标函数由损失函数和正则化项组成。(Objective = Loss + Regularization)
对于二分类模型,通常使用的是二元交叉熵损失函数 binary_crossentropy。
对于多分类模型,如果label是类别序号编码的,则使用类别交叉熵损失函数 categorical_crossentropy。如果label进行了one-hot编码,则需要使用稀疏类别交叉熵损失函数 sparse_categorical_crossentropy。
1、内置损失函数内置的损失函数一般有类的实现和函数的实现两种形式。
常用的内置损失函数
mean_squared_error(平方差误差损失,用于回归,简写为 mse, 类实现形式为 MeanSquaredError 和 MSE)
mean_absolute_error (绝对值误差损失,用于回归,简写为 mae, 类实现形式为 MeanAbsoluteError 和 MAE)
mean_absolute_percentage_error (平均百分比误差损失,用于回归,简写为 mape, 类 ...
TensorFlow2.X学习笔记(6)--TensorFlow中阶API之特征列、激活函数、模型层
一、特征列feature_column特征列通常用于对结构化数据实施特征工程时候使用,图像或者文本数据一般不会用到特征列。使用特征列可以将类别特征转换为one-hot编码特征,将连续特征构建分桶特征,以及对多个特征生成交叉特征等等。
注意:所有的Catogorical Column类型最终都要通过indicator_column转换成Dense Column类型才能传入模型!
numeric_column 数值列,最常用。
bucketized_column 分桶列,由数值列生成,可以由一个数值列出多个特征,one-hot编码。
categorical_column_with_identity 分类标识列,one-hot编码,相当于分桶列每个桶为1个整数的情况。
categorical_column_with_vocabulary_list 分类词汇列,one-hot编码,由list指定词典。
categorical_column_with_vocabulary_file 分类词汇列,由文件file指定词典。
categorical_column_with_hash_bucket ...
TensorFlow2.X学习笔记(5)--TensorFlow中阶API之数据管道
TensorFlow的中阶API【模型之墙】TensorFlow的中阶API主要包括:
数据管道(tf.data)
特征列(tf.feature_column)
激活函数(tf.nn)
模型层(tf.keras.layers)
损失函数(tf.keras.losses)
评估函数(tf.keras.metrics)
优化器(tf.keras.optimizers)
回调函数(tf.keras.callbacks)
一、数据管道Dataset
使用 tf.data API 可以构建数据输入管道,轻松处理大量的数据,不同的数据格式,以及不同的数据转换。
使用tfrecoreds文件的优点是压缩后文件较小,便于网络传播,加载速度较快。
1、从Numpy array构建数据管道123456789# 从Numpy array构建数据管道import tensorflow as tfimport numpy as np from sklearn import datasets iris = datasets.load_iris()ds1 = tf.data.Dataset.from_te ...
TensorFlow2.X学习笔记(4)--TensorFlow低阶API之AutoGraph相关研究
AutoGraph相关研究TensorFlow 2.0主要使用的是动态计算图和Autograph。
动态计算图易于调试,编码效率较高,但执行效率偏低。
静态计算图执行效率很高,但较难调试。
而Autograph机制可以将动态图转换成静态计算图,兼收执行效率和编码效率之利。
当然Autograph机制能够转换的代码并不是没有任何约束的,有一些编码规范需要遵循,否则可能会转换失败或者不符合预期。
一、Autograph使用规范1、规范总结
1,被@tf.function修饰的函数应尽可能使用TensorFlow中的函数而不是Python中的其他函数。例如使用tf.print而不是print,使用tf.range而不是range,使用tf.constant(True)而不是True.
2,避免在@tf.function修饰的函数内部定义tf.Variable.
3,被@tf.function修饰的函数不可修改该函数外部的Python列表或字典等数据结构变量。
2、规范解析被@tf.function修饰的函数应尽量使用TensorFlow中的函数而不是Python中的其他函数。
123456 ...
TensorFlow2.X学习笔记(3)--TensorFlow低阶API之张量
TensorFlow的低阶API主要包括张量操作,计算图和自动微分。
如果把模型比作一个房子,那么低阶API就是【模型之砖】。
在低阶API层次上,可以把TensorFlow当做一个增强版的numpy来使用。
TensorFlow提供的方法比numpy更全面,运算速度更快,如果需要的话,还可以使用GPU进行加速。
一、张量的结构操作张量的操作主要包括张量的结构操作和张量的数学运算。
张量结构操作诸如:张量创建,索引切片,维度变换,合并分割。
张量数学运算主要有:标量运算,向量运算,矩阵运算。另外我们会介绍张量运算的广播机制。
Autograph计算图我们将介绍使用Autograph的规范建议,Autograph的机制原理,Autograph和tf.Module.
1、创建张量1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556import tensorflow as tfimport numpy as np# 1、创建一个一维张量a ...
TensorFlow2.X学习笔记(2)--TensorFlow的层次结构介绍
TensorFlow的层次结构TensorFlow中5个不同的层次结构:
硬件层,内核层,低阶API,中阶API,高阶API
最底层为硬件层,TensorFlow支持CPU、GPU或TPU加入计算资源池。
第二层为C++实现的内核,kernel可以跨平台分布运行。
第三层为Python实现的操作符,提供了封装C++内核的低级API指令,主要包括各种张量操作算子、计算图、自动微分. 如tf.Variable,tf.constant,tf.function,tf.GradientTape,tf.nn.softmax... 如果把模型比作一个房子,那么第三层API就是【模型之砖】。
第四层为Python实现的模型组件,对低级API进行了函数封装,主要包括各种模型层,损失函数,优化器,数据管道,特征列等等。 如tf.keras.layers,tf.keras.losses,tf.keras.metrics,tf.keras.optimizers,tf.data.DataSet,tf.feature_column… 如果把模型比作一个房子,那么第四层API就是【模型之墙】。
第五层为Pyt ...