大数据导论复习资料

1.R语言(quantmod)安装与使用过程:

 安装过程:(1)连网时,用函数install.packages(),选择镜像后,程序将自动

下载并安装程序包(2)安装本地zip包:①路径packages>install packages from local

files②选择光盘或者本地磁盘上存储zip包的文件夹 注意:Windows平台下程序包为zip文件,安装时不要解压缩(3)具体操作步骤:

  1. >install.packages(“ape”)

通过GUI使用本地压缩文件安装方式:

  1. 选择CRAN保护镜像——China(Shanghai1)[https]
  2. 在RGui软件上选择package中的Install package(s) from local files
  3. 打开quantmod的压缩包

          使用quatmod前安装依赖包:

  1. >install.packages(“xts”)
  2. >install.packages(“TTR”)

  使用过程:(1)编写数据分析代码①Getting data:②getSymbols() (2)具体操作步骤:

  1. >library(quantmod)
  2. >getSymbols(“GOOG”,src=”yahoo”,from=”2018-01-01”,to=2018-09-14)

#从雅虎财经获取googel的股票数据。

  1. >chartSeries(GOOG,up.col = ‘red’,dn.col = ‘green’)

   #绘制股票发展趋势K线图,上涨用红色表示,股票下跌用绿色表示

  1. addMACD()函数,为K线图增加MACD曲线
  2. 可以利用步骤3的原理修改颜色
  3. 将数据分析结果存入本地设备:>png(“D:\\pic1.png”,width = 850,height = 450)
  4. >barChart(GOOG,theme = “white”)
  5. >dev.off()

2、hadoop高可靠性、高效性、高可扩展性、高容错性、成本低、运行在Linux平台上、支持多种编程语言,局限性,主要包括以下几个方面:不适合低延迟数据访问、无法高效存储大量小文件、不支持多用户写入及任意修改文件

目标是兼容廉价的硬件设备、流数据读写、大数据集、简单的文件模型、强大的跨平台兼容性

  1. 存储元数据;存储文件内容;元数据保存在内存中;文件内容保存在磁盘;保存文件,block , datanode之间的映射关系;维护了block id到datanode本地文件的映射关系
  2. 第二名称节点,用来保存名称节点中对HDFS元数据信息的备份,并减少名称节点重启的时间。单独运行在一台机器上
  3. HDFS采用了主从(Master/Slave)结构模型,一个HDFS集 群包括一个名称节点(NameNode)和若干个数据节点(DataNode)。名称节点作为中心服务器,负责管理文件系统的命名空间及客户端对文件的访问。集群中的数据节点一般是一个节点运行一个数据节点进程,负责处理文件系统客户端的读/写请求,在名称节点的统一调度下进行数据块的创建、删除和复制等操作。每个数据节点的数据实际上是保存在本地Linux文件系统中的
  4. Hdfs的容错性高,设计了相应的机制检测数据错误和进行错误恢复(1)名称节点

出错,名称节点保存了所有的元数据信息,其中最核心的就是FSimage和Editlog,如果文件损坏,整个HDFS失效,因此有备份机制,把核心文件同步复制到secondaryname上,当名称节点出错时,进行恢复(2)数据结点信息,数据结点定时发送心跳信息,数据结点发生故障或者断网时,收不到心跳信息,记作宕机,名称节点不接受I/O请求,副本数量小于冗余因子,启动冗余复制,为它生成新的副本(3)数据出错,网络传输和磁盘错误,先读取信息文件,如果校验出错,请求另一个数据结点读取该文件块,并且向名称节点报告错误,名称节点重新复制

Hadoop1.0和2.0,单一名称节点,单点故障,单一命名空间,无法实现资源隔离,MapReduce资源管理效率低,federation设计多个互相独立的名称节点,进行各自的命名空间管理和块管理,提高可扩展性,吞吐率和隔离性,MapReduce:单点故障,jobtarcker大包大揽任务重容易溢出,资源划分不合理,ARN运行不同框架(容器)

  1. Spark与Hadoop的对比 Hadoop存在如下一些缺点:表达能力有限、磁盘IO开销大、延迟高、任务之间的衔接涉及IO开销、在前一个任务执行完成之前,其他任务就无法开始,难以胜任复杂、多阶段的计算任务,Spark主要具有如下优点:Spark的计算模式也属于MapReduce,但不局限于Map和Reduce操作,还提供了多种数据集操作类型,编程模型比Hadoop MapReduce更灵活、Spark提供了内存计算,可将中间结果放到内存中;对于迭代运算效率更高、Spark基于DAG的任务调度执行机制,要优于Hadoop MapReduce的迭代执行机制、使用Hadoop进行迭代计算非常耗资源、Spark将数据载入内存后,之后的迭代计算都可以直接使用内存中的中间结果作运算,避免了从磁盘中频繁读取数据
  2. Spark同时支持批处理,交互查询和流数据处理(复杂的批数据处理,基于历史的交互式查询,基于实时数据流的数据处理)
  3. Spark运行架构集群资源管理器(Clster Manager)、运行作业任务的工作节点(Worker Node)、每个应用的任务控制节点(Driver) 和每个工作节点上负责具体任务的执行进程(Executor)、资源管理器可以自带或YARN
  4. Spark的主要特点:(1)运行速度快:使用DAG执行引擎以支持循环数据流与内存计算。(2)容易使用:支持使用Scala、Java、Python和R语言进行编程,可以通过Spark Shell进行交互式编程。(3)通用性:Spark提供了完整而强大的技术栈,包括SQL计算、流式计算、机器学习和图算法组件。(4)运行模式多样:可以访问HDFS、Cassandra、HBase、Hive等多种数据源。
  5. 与Hadoop MapReduce计算框架相比,Spark所采用的Executor有两个优点:一是利用多线程来执行具体的任务,减少任务的启动开销二是Executor中有一个BlockManager存储模块,会将内存和磁盘共同作为存储设备,有效减少IO开销
  6. RDD特性 Spark采用RDD以后能够实现高效计算的原因主要在于:(1)高效的容错性:现有容错机制:数据复制或者记录日志、RDD:血缘关系、重新计算丢失分区、无需回滚系统、重算过程在不同节点之间并行、只记录粗粒度的操作(2)中间结果持久化到内存,数据在内存中的多个RDD操作之间进行传递,避免了不必要的读写磁盘开销(3)存放的数据可以是Java对象,避免了不必要的对象序列化和反序列化
  7. Spark一键式安装和部署,线程级别任务的监控和告警,降低硬件集群,软件维护,任务监控和应用开发的难度,便于做成统一平台资源池
  8. HDFS体系结构概述  MapReduce的体系结构 MapReduce主要有以下4个部分组成:1) Client:用户编写的MapReduce程序通过Client提交到JobTracker端。用户可通过Client提供的一- 些接口查看作业运行状态2) JobTracker:JobTracker负责资源监控和作业调度JobTracker监控所有TaskTracker与Job的健康状况,一旦发现失败, 就将相应的任务转移到其他节点 JobTracker会跟踪任务的执行进度、资源使用量等信息,并将这些信息告诉任务调度器(TaskScheduler) ,而调度器会在资源出现空闲时,选择合适的任务去使用这些资源3) TaskTracker:TaskTracker会周期性地通过“心跳”将本节点上资源的使用情况和任务的运行进度汇报给JobTracker,同时接收JobTracker发送过来的命令并执行相应的操作(如启动新任务、杀死任务等)。TaskTracker使用“slot等量划分本节点上的资源量(CPU、内存等)。一个Task 获取到一个slot后才有机会运行,而Hadoop调 度器的作用就是将各个TaskTracker上的空闲slot分配给Task使用。slot 分为Map slot和Reduce slot两种,分别供Map Task和Reduce Task使用4) Task:Task分为Map Task和Reduce Task两种,均由TaskTracker启动
  9. MapReduce的全过程:从hdfs读取数据,执行map任务输出中间结果,通过shuffle把中间结果分区排序整理后发给reduce任务,执行reduce任务得到最终结果,并写入分布式文件系统,应用于关系代数运算,分组和聚合运算,矩阵向量乘法

 

 

  1. 流数据特征:数据快速持续到达,数据来源众多,数据复杂,数据量大,但不关注存储,一旦经过处理,要么被丢弃,要么归档存储,注意数据的整体价值,不过分关注个别数据
  2. 静态数据(批量计算)流数据(实时计算),充裕时间处理静态数据,需要先采集数据存储在关系型数据库管理系统中,在查询和数据管理系统进行交互。而流处理系统处理的实时的数据,用户获取的是实时的结果,批处理系统用户主动发出查询,流处理将结果推送给用户。
  3. 流计算应用:web服务,机器翻译,广告投放,气候模拟预测,电子商务平台点击
  4. Storm框架设计中Worker、executor、task三者之间的关系1.worker:每个worker进程都属于一个特定的Topology,每个Supervisor节点的worker可以有多个,每个worker对Topology中的每个组件(Spout或Bolt)运行一个或者多个Executor线程来提供task的运行服务。2.Executor:executor是产生于worker进程内部的进程,会执行同一个组件的一个或者多个task3.Task:实际的数据处理由task完成,在Topology的声明周期中,每个组件的task数目是不会发生变化的,而executor的数目却不一定。Executor数目小于等于task的数目,默认情况下,二者是相等的。
  5. Strom中的Stream Groupings有如下几种方式:1.ShuffleGrouping:随机分组,随机分发Stream中的Tuple,保证每个Bolt的Task接收Tuple数量大致一致2.FieldsGrouping:按照字段分组,保证相同字段的Tuple分配到同一个Task中3.AllGrouping:广播发送,每一个Task都会收到所有的Tuple4.GlobalGrouping:全局分组,所有的Tuple都发送到同一个Task中5.NonGrouping:不分组,和ShuffleGrouping类似,当前Task的执行会和它的被订阅者在同一个线程中执行6.DirectGrouping:直接分组,直接指定由某个Task来执行Tuple的处理
  6. 大数据处理主要的三个类型:1.复杂的批量数据处理:通常时间跨度在数十分钟数小时之间2.基于历史数据的交互式查询:通在数十秒到数分钟之间3.基于实时数据流的数据处理:数百毫秒到数秒之间
  7. NoSQL兴起的原因1、关系数据库已经无法满足Web2.0的需求。主要表现在以下几个方面:(1)无法满足海量数据的管理需求(2)无法满足数据高并发的需求(3)无法满足高可扩展性和高可用性的需求
  8. NoSQL与关系数据库的比较 (1)关系数据库 优势:以完善的关系代数理论作为基础,有严格的标准,支持事务ACID四性,借助索引机制可以实现高效的查询,技术成熟,有专业公司的技术支持 劣势:可扩展性较差,无法较好支持海量数据存储,数据模型过于死板、无法较好支持Web2.0应用,事务机制影响了系统的整体性能等 (2) NoSQL数据库 优势:可以支持超大规模数据存储,灵活的数据模型可以很好地支持Web2.0应用,具有强大的横向扩展能力等 劣势:缺乏数学理论基础,复杂查询性能不高,大都不能实现事务强致性,很难实现数据完整性,技术尚不成熟,缺乏专业团队的技术支持,维护较困难等
  9. C:一致性,A可用性P分区容忍性

CA:把所有与事物相关都放在同一台机器上,CP:当网络分区时,受影响的服务器得等待数据一致,无法提供服务,AP:允许数据不一致,关注网站服务是否可用,即微博,能够立刻发布,什么时候读取不重要BASE:软状态和最终一致性,强一致性和弱一致性,高并发的数据访问操作下,后续操作是否可以获取最新的,能够是强,弱经过一段时间也会读到(如何实现数据一致性,N数据复制份数,W更新数据需要保证写完成的节点数,读取数据需要读取的节点数,R读取数据需要读取的节点数)10、键值数据库Redis(内存键值数据库,把数据存放在内存中,持久化键值数据库,放在磁盘里)列祖数据库hbase(由多个行构成,每行包含多个列族,属于同一列族的数据会被存放在一起)文档数据库mongodb(键定位一个文档,每个文档包括复杂的数据结构并且不需要采用特定的数据模式,每个文档可以具有不同的结构)图数据库(顶点和边,模式识别,社交网络,依赖分析,推荐系统和路径寻找)

  1. 文件读写

Txt/bin

f=open('d:\\test.txt','a+')

f.read()

f.close()#r只读,不可以写

f1=open('d:\\test.txt','w')#w要想改要清空文件再重新写入

f1.write('hello,boy!')

f1.close()

r+会替换原文件,不清空

f2=open('d:\\test.txt','r+')

f2=write('\nhello a')

f2.close()

f=open('d:\\test.txt','a+')

f.read()

csv

import csv

csv_reader=csv.reader(open('taxi.csv',encoding='utf-8')

for row in csv_reader:

   print(row)

stu1['nana','21']

out=open('taxi.csv','a',newline=' ')

csv_write=csv_write(out.dialect='excel')

csv_writer.writerrow(stu1)

out.close

二进制0B,八进制0o十六进制0x

bin(50)转化成二进制字符 oct(50)转化成八进制

hex(50)转换为16进制

complex(2,3)创建复数

not非 and与or 或

小数from decimal import Decimal

分子分母最简from fractions import Fraction

将浮点数转换成分数Fraction(5,4)

  1. 计算程序运行时间

import time

start = time.time()

func()

end = time.time()

print("func函数运行时间:",end-start)

3、约瑟夫环代码:

  mylist = range(1,31)

  delete_list = list()

  x = 0

  i = 0

  while len(delete_list)<15:

if(x>29):

  x=0

if (mylist[x] not in delete_list):

  i = i +1

if i == 9

  print(mylist[x])

  delete_list.append(mylist[x])

  i = 0;

x = x+1

4、随机数的而生成:

  import random

  Print(random.randint(0,9))   #输出0~9的随机数

4.进制转换:

  int(‘111’)         #默认十进制转换

  Int(‘111’,2)    7   #按二进制转换

  str(object)->string  #十进制转换为字符串

  list(string)         #字符串转列表

  “.join(list())        #列表转字符串

  tuple(string)       #字符串转元组、

  “.join(tuple)       #元组转字符串

  tuple(list)         #列表转元组

  list(tuple)         #元组转列表

5、w:写文件,创建新文件,若文件已存在,原来的文件被覆盖

a:追加方式写文件,若文件存在,写入的数据默认添加到文件末尾,文件不存在时创建新文件。

r:读文件

b:wb , ab , rb 读bin

+:打开文件后可同时进行读写作

1、输出素数(100以内)

print,(1,2,3, end=””)      #1.2.3是索数,直接输出for x in range (4,100);for n in range (2,x)           if  x% n==0;    #若余数为0,x不是素数,结束当前for循环

 break else:print (x, end =’’)        #正常结束,x是系数,输出

else:   print (‘over’)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/nanaz11/article/details/85227047