大数据学习笔记300条

1、Zookeeper用于集群主备切换。

2、YARN让集群具备更好的扩展性。

3、Spark没有存储能力。

4、Spark的Master负责集群的资源管理,Slave用于执行计算任务。

5、Hadoop从2.x开始,把存储和计算分离开来,形成两个相对独立的子集群:HDFS和YARN,MapReduce依附于YARN来运行。

6、YARN可以为符合YARN编程接口需求的集群提供调度服务。

7、YARN:

ResourceManager 一主多备

NodeManager    一般与DataNode部署在一起。

8、单机硬件配置会严重影响集群的性能。

9、初始化集群机器环境:创建账号、安装JDK、设置时间同步。

10、Zookeeper的部署最简单,其节点数必为奇数。

11、ZK两个端口,前者是链接Leader后者是用于竞选。

12、部署Spark StandLone集群:

1、SSH无密码登录

2、复制解压Spark

3、编写配置文件分发到所有节点

13、Hadoop2.x以上支持双机热备。

14、Standlone模式只支持简单的固定资源分配策略。

15、YARN统一为集群上的所有计算负载分配资源,可以避免资源分配的混乱无序。

16、Spark程序由Master还是YARN来调度执行,是由Spark程序在提交时决定的。

17、YARN两种调度模式:

Yarn-cluster 模式,用于生产

Yarn-client  模式,用于交互

18、Spark计算都是围绕RDD进行的。

19、Spark在运行时,一般RDD操作会为每个RDD分区运行一个job。

20、Job最简单的理解,它对应一个java线程。

21、Spark所有基于文件的生产RDD方法,都支持目录、压缩文件和通配符。

22、RDD是Spark的核心抽象,所有计算都围绕RDD进行。

23、RDD操作分为两类:

【大数据开发学习资料领取方式】:加入大数据技术学习交流扣扣群数字522数字189数字307,即可免费领取开发工具以及入门学习资料

Transformation 转换

Action        动作

24、所有Transformation都是Lazy模式,先记录计算方式,Driver返回结果时开始计算。

25、RDD的Transformation实际计算只在Action返回结果时才进行,或者持久化。

26、Spark严重依赖传递函数类型的参数。

27、从Driver分发各个节点过程:

Job执行:

1、在Driver节点上序列化代码

2、传送至各个计算节点

3、在计算节点上反序列化

4、执行

28、Scala function支持序列化。

29、Spark的核心是RDD,而RDD是分布式计算的。

30、Spark会将Job运行所有依赖的变量、方法、(闭包)全部打包在一起序列化。

31、RDD操作的禁忌,不能嵌套调用。

32、Action操作输出不再是RDD,返回值Driver程序。

33、Spark集群上的资源主要是CPU core数量和物理内存。

34、在程序运行时,每个core对应一个线程。

35、Standlone模式下由Spark集群中的master节点进行资源调度。

36、Spark调度两类:

1、spark程序见的调度(主)

2、spark程序内部的调度

37、用户编写的spark程序称为Driver程序。

38、每个驱动程序都有一个SparkContext对象,担负着与集群沟通的职责。

39、集群管理器负责集群的资源调度。

40、执行器,每个spark程序在每个节点上启动的一个进程。

41、一次RDD Action对应一次job。

42、Stage,job在执行过程中被分为多个阶段。

43、Task,在执行器上执行的最小单位。

44、Spark程序间的调度:

静态分配 (主)

动态分配

45、所有集群管理器都支持静态资源分配。

46、当spark为多用户服务时,需要配置spark程序内部的调度。

47、不同线程提交的job可以并行执行。

48、默认spark的调度器以FIFO方式运行Job。

49、公平调度还支持对多个Job进行分组,分组称为调度池。

50、Spark性能优势,很大一部分原因是内存和缓存。

51、RDD持久化可以多次利用,性能提高10倍以上。

52、Spark提供两类共享变量——广播变量和计数器。

53、广播变量是一个只读变量,在所有节点上都是一份缓存。

54、计数器只能增加,用于技术和求和。

55、容错机制是分布式系统的一个重要能力。

56、DAG:有向无环图的计算任务集合。

57、分布式系统经常需要做检查点。

58、RDD也是一个DAG,每一个RDD都会记住创建该数据需要哪些操作——血统。

59、RDD依赖:

窄依赖 —— 父分区对应一个子分区

宽依赖 —— 父分区对应多个子分区

60、Spark提供了预写日志(journal),先将数据写入支持容错的文件系统中。

61、Spark master容错:

Standalone ——Zookeeper

单点      ——本地重启

62、Slave节点失效:

1、Work异常停止

2、执行器异常停止

3、Driver异常退出

63、监控管理:

1、Web界面

2、Metrics

3、外部系统

64、Web界面:

1、调度器stage,Task列表

2、RDD大小和内存文件统计情况

3、环境信息

4、正在执行的执行器信息

65、Standlone模式的集群管理器有自己的web界面。

66、Web界面表格的头部都支持点击排序。

67、Spark程序一般都是由脚本bin/spark-submit来提交的。

68、RDD特点:

1、RDD是只读的

2、RDD可指定缓存在内存中

3、RDD可以通过重新计算得到

69、RDD核心属性:

1、一个分区列表

2、一个依赖列表

3、一个名为compute的计算函数

4、分区器

5、计算各分区是优先的位置列表

70、Action不可以在RDD Tranformation内部调用。

71、Transformation只是建立在计算关系,而action才是实际的执行者——触发者

72、Spark.local.dir用于shuffle。

73、SparkContext是spark程序最主要的入口。

74、每个jvm只允许启动一个sparkContext。

75、DAG是最高层级的调度,每个job对应一个DAG。

76、RunJob,提交RDD Action 操作,是所有调度执行的入口。

77、sparkContext在初始化时,创建了DAG调度与task调度来负责RDD Action操作的调度执行。

78、任务提交时,不是按Job的先后顺序提交的,而是倒序的。

79、仅对依赖类型是shuffle Dependency的RDD操作创建Stage。

80、DAG在调度室,对于在相同节点上进行的Task计算会合并为一个Stage。

81、各stage之间以shuffle为分界线。

82、Spark SQL是spark的一个子模块,专门用于处理结构化数据。

83、Spark SQL的最大优势是性能非常高。

84、Spark SQL与Apache Hive基本完全兼容。

85、Spark SQL提供领域API,并且提供专门的数据结构抽象DataFrame。

86、Spark SQL支持非常多的数据源:Hive、Avro、Jdbc、Json等,而且统一访问。

87、Spark SQL两种使用:

1、SQL引擎

2、API 操作

88、分布式SQL引擎,两种运行方式:

1、JDBC/ODBC Server

2、Spark SQL 命令行

89、Spark SQL相关的所有函数,都在SqlContext或它子类中。

90、DataFrame创建:

1、使用反射的方法从RDD创建DataFrame

2、使用程序动态从RDD创建DataFrame

3、从其他数据源生产DataFrame

91、DataFrame支持许多特殊的操作,称为领域编程语言或领域API。

92、DataFrame注册成表,然后使用纯SQL来访问。

93、Parquet是一种大数据计算中最常用的列式存储格式。

94、数据源类型的名称一般是全称。

95、优化是非常重要的环节,需要不断积累经验。

96、Catalyst(催化剂)是Spark SQL执行有限优化器的代号,最核心部分。

97、Catalyst最主要的数据结构是树。

98、所有优化都是基于规则的。

99、Catalyst优化:

1、分析阶段

2、逻辑优化阶段

3、物理优化阶段

4、代码优化阶段

100、Spark的性能基本上与数量大小保持线性关系。

101、Spark Streaming接收实时数据,按日期将数据划分为成多批次(Batch),按批次提交个核心计算。

102、Spark Streaming使用的数据抽象是DStream。

103、DStream内部是连续的RDD序列。

104、Sprak Streaming 3种输入DStream:

1、基本型

2、高级型

3、自定义

105、高级类型的输入DStream并不是由Spark提供。

106、使用数据源时,要注意可靠性。

107、DStream操作:

1、Transformation操作

2、Output操作类似RDD Action

108、Transform提供直接操作DStream内部RDD的方法。

109、Spark Streaming提供专门的状态更新方法。

110、设置数据的滑动窗口,将数个原始DStream合并成一个窗口DStream。

111、窗口(Window)通过连个参数确定:1)窗口长度、2)滑动区间。

112、Output操作将DStream结果输出到外部系统。

113、DStream可以序列化到内存。

114、窗口函数和updateStateBykey默认会自动持久化。

115、网络按收数据,默认持久化两个节点上,保证容错。

116、DStream基础属性:

1、依赖的在DStream列表

2、生产RDD的时间

3、Complete计算函数

117、RDD是只读的,可重复计算的分布式数据集。

118、SparkStreaming大部分数据来自网络。

119、流式计算过程:

输入数据流>>数据接收>>数据计算>>结果输出。

120、结果输出操作本身提供至少一次级别的容错性能。

121、Spark提供了检查点功能,用户定期记录中间状态。

122、检查点是有代价的,需要存储数据至存储系统。

123、Spark性能调优两个方向:

1、每个批次的处理时间尽可能短

2、收到数据后,尽可能快地处理

124、Storm是开源免费的分布式实时计算系统。

125、Storm的核心数据抽象是tuple,是命名的值列表。

126、Spark Streaming粗粒度,storm更细粒度些。

127、核心数据抽象的不同导致计算模式上的本质却别。

128、Weblog分析的典型的流式实时应用场景。

129、ZK以Fast Paxos算法为基础。

130、ZK在分布式系统中协作多任务。

131、Hbase是一个通常与Hadoop一起使用的数据库。

132、Kafka是一个基于发布-订阅模型的消息系统。

133、Solr是一个企业级的搜索平台。

134、ZK不适合用作海量数据存储。

135、分布式系统中的进程通信有两种选择:直接通过网络进行信息交换,或读写某些共享存储。

136、ZK使用共享存储模型来实现应用间的协作和同步原语。

137、网络通信是分布式系统中并发设计的基础。

138、分布式系统需注意:

1、消息延迟  ——传输

2、处理器性能——计算

3、时钟偏移  ——时钟

139、数据中心通常使用大量统一的硬件。

140、主-从架构:主节点负责跟踪从节点状态和任务的有效性,并分配任务到节点。

141、主-从模式必解决三个关键问题:

很多初学者,对大数据的概念都是模糊不清的,大数据是什么,能做什么,学的时候,该按照什么线路去学习,学完往哪方面发展,想深入了解,想学习的同学欢迎加入大数据学习qq群:458345782,有大量干货(零基础以及进阶的经典实战)分享给大家,并且有清华大学毕业的资深大数据讲师给大家免费授课,给大家分享目前国内最完整的大数据高端实战实用学习流程体系

1、主节点崩溃

2、从节点崩溃

3、通信故障

142、ZK因故障出现连个及以上主节点称为脑裂(split-brain)。

143、主-从架构的需求:

1、主节点选举

2、崩溃检测

3、组成员关系管理

4、元数据管理

144、ZK:Paxos算法和虚拟同步技术。

145、Znode Zookeeper 操作和维护一个小型的数据节点。

146、Znode类型决定了znode节点的行为方式。

147、Znode节点分持久节点和临时节点。

148、Znode4中类型:

1、持久化(persist)

2、临时的

3、持久有序的

4、临时有序的

149、通知机制是单次触发的操作。

150、每一个znode都有一个版本号,它随着每次数据变化而自增。

151、ZK服务器端两种模式:1)独立模式、2)仲裁模式。

152、对ZK集合执行请求需要建立会话。

153、会话请求以FIFO顺序执行。

154、会话状态:

1、Connecting

2、Connected

3、Closed

4、Not connected

155、Server两个端口,第一个用作通讯,第二个用于选举。

156、ZK的API围绕ZK的句柄(handle)而构建。

157、为了从ZK接收通知,我们需要实现监视点(watcher)。

158、监视点和通知形成了一个通用机制。

159、当一个监视点被一个事件触发时,就会产生一个通知。

160、Redis是一个内存数据库,基于键值对存储。

161、Redis是REmoteDictionaryServer(远程字典服务器)简写。

162、 Redis支持键值数据类型:

1、字符串类型

2、散列类型

3、列表类型

4、集合类型

5、有序集合类型

163、数据在Redis和程序中存储类似。

164、Redis数据库中的所有数据都存储在内存中。

165、Redis可以在一秒中读写上十万个键值(普通自己本)。

166、Redis提供数据持久化到硬盘。

167、Redis可用做缓存、队列系统。

168、Redis可以为每个键设置生存时间,过时自动删除。

169、Redis可以限定数据占用的最大内存空间。

170、Redis还支持“发布/订阅”的消息模式。

171、Redis支持阻塞式读取。

172、Kill Redis 进程的PID也可正常退出,Redis有处理。

173、每个数据类型Redis-cli的展现结果都不同。

174、Redis默认支持16个数据库,以数字命令。

175、Redis不支持自定义数据库的名字,每个数据库以编号命名。

176、Redis密码只有一个。

177、FLUSH ALL 命令清空Redis所有数据。

178、一个Redis最好对应一个程序。

179、Redis 0号数据库用于生产,1号数据库用于测试。

180、Select n 切换数据库。

181、Keys命令需要遍历Redis中的所有键,不建议生产用。

182、Exict key 返回 1/0。

183、Del key返回键值个数,不支持通配符。

184、Type命名用来获取键值的数据类型。

185、LPOSH命令的作用是指定列表型键中增加一个元素。

186、Redis能存储任何形式的字符串。

187、Redis INCR命令让当前键值递增。

188、原子操作取“原子”的“不可拆分”的意思,最下执行单元。

189、Redis数据类型不支持数据类型嵌套。

190、散列类型适合存储:使用对象类别和ID构成键名,使用字段表示对象属性。

191、Redis不要求每个键都依据此结构存储。

192、Hset命令用来赋值,Hget用于取值。

193、Hset插入返回1,更新返回0。

194、Hset命令用于散列类型,set用于字符串类型。

195、Hmset处理多个字段。

196、HgetAll所有字段和字段值。

197、Hexists用于判断一字段是否存在。

198、HsetNX key field value 当字段不存在时赋值。

199、Hinrby key field increment 增加数字。

200、Hdel key field 删除字段。

201、列表类型(List)可以存储一个有序的字符串列表。

202、列表类型内部是使用双向链表实现的。

203、借助列表类型,Redis还可以作为队列使用。

204、向列表两端增加元素:

LPUSHKEYVALUE[、、.]

PPUSHKEYVALUE[、、.]

返回长度

205、从列表两端弹出元素:

LPOPKEY

RPOPKEY

206、获取列表中元素的个数 llen key。

207、获取列表中指定值:LREM KEY count value。

208、Redis集合类型内部使用散列表实现的。

209、增加和删除元素:

Saddkey member [、、.]]

Sremkey member [、、.]]

210、Smembers命令返回集合中所有元素。

211、集合间运算:

1、Sdiff key [key 、、.] ——差集

2、Sinter key [、、、]  ——交集

3、Sunion 、、、     ——并集

212、有序集合是Redis最高级的类型。

213、Redis中的事务是一组命令的集合。

214、事务:要么全执行,要么全不执行。

215、Redis不支持回滚功能。

216、Watch命令可以监控一个或多个键。

217、Redis可以用expire命令设置一个键的过期时间。

218、TTL命令查看剩余时间-2删除,-1永久。

219、Persist取消过期。

220、Redis可限制最大内存。

221、LRU算法即“最近最少使用”。

222、有序集合常见的使用场景是大数据排序。

223、对有序集合类型排序是会忽略元素的分类。

224、Sort默认按照从下到大排序,用desc逆序。

225、Sort通过alpha参数实现按照字典,顺序排序非数字元素。

226、Sort支持limit返回指定参数。

227、参考键值相同时,Redis会按照元素本身大小排序。

228、有个N个Get参数,每个元素返回的结果就有N行。

229、Get会返回元素本身的值。

230、Store参数常用来结合expire缓存排序结果。

231、Sort是Redis中最强大最复杂的命令之一。

232、通知的过程可以借助任务队列来实现。

233、任务队列好处:1)松耦合,2)易于扩展。

234、当列表中没有元素BRPOP会一直阻塞住连接。

235、BRPOP命令按收两个参数键名,超时时间,单位秒。

236、如果多个键都有元素则从左向右顺序取实现优先。

237、发布者发布消息的命令是PUBLISH。

238、订阅频道的命令是SUBSCRIBE,可用的多个订阅。

239、进入订阅状态后客户端可能收到了3种类型的恢复。

240、PUSH SCRIBE命令订阅指定的规则。

241、客户端和Redis使用TCP协议连接。

242、Redis的底层通信协议对管道提供了支持。

243、精简键名和键值是最直观的减少内存暂用的方式。

244、允许开发者使用LUA语言编写脚本传到Redis中执行。

245、LUA脚本好处:1)减少网络开销、2)原子操作、3)复用。

246、——eval参数是告诉Redis-clli读取并运行后面的LUA脚本。

247、LUA号称性能最高的脚本。

248、LUA脚本很容易和C/C++交互。

249、LUA是一个动态类型语言。

250、表类型是LUA语言中唯一的数据结构。

251、函数在LUA中是一等值。

252、全局变量只有Nil和非Nil的区别。

253、在Redis脚本中不能使用全局变量。

254、声明局部变量的方法为local变量。

255、多行注释:——[[ ]]。

256、LUA支持多重赋值。

257、LUA有5类操作符:

1、数学操作符

2、比较操作符

3、逻辑操作符

4、链接操作符

5、取长度操作符

258、LUA if 语句 if .、then .、elseif ..then..else..end。

259、LUA支持while,repeat和for循环语句。

260、For语句中的循环变量是局部变量。

261、LUA约定数组的索引从1开始。

262、Paris是LUA内置的函数,实现类似迭代器的功能。

263、Pairs用来遍历非数组的表。

264、函数的定义为:function(参数列表) 函数体 end。

265、…实现可变参数。

266、LUA中return和break用于跳出循环。

267、编写Redis脚本的目的就是读写Redis的数据。

268、LUA脚本使用Redis,call函数调用Redis命令。

269、EVALHA命令允许开发者通过脚本。

270、Script kill命令可以终止当前脚本的运行。

271、Redis支持两种方式的持久化,一种是RDB方式,另一种是AOF方式。

272、Redis提供了复制(replication)功能,自动同步数据库。

273、在复制概念中,数据库分为两类:master/slave。

274、Slave of 参数指向主数据库,进行同步数据。

275、通过复制可以实现读写分离,以提高服务器的负载能力。

276、Master用于写,slave用于读,适合读多写收的场景。

277、哨兵的作用就是监控Redis系统的运行状态:

1、监控主/从是否正常

2、当出现故障时,从升为主

278、哨兵是一个独立的进程。

279、哨兵从独立进程的方式对一个主从系统进行监控。

280、Redis 3.0版本支持集群。

281、生产环境运行时不能运行外界直连Redis。

282、Bing 127.0.0.1只运行本机访问。

283、Redis支持在配置文件中奖命令重命名。

284、如果希望直接禁用某个命令可以将命令重命名成XXX。

285、Redis通信协议是Redis客户端与Redis间交流的语言。

286、Redis两种通信协议:

1、二进制安全的统一请求协议

2、telnet程序中输入的简单协议

287、哨兵提供了命令可以通过主数据库的名字获取当前系统的主数据库的地址和端口号。

288、一个哨兵可以同时监控多个Redis主从系统。

289、多个哨兵也可以同时监控同一个Redis主从系统。

290、MapReduce两阶段:Map阶段和Reduce阶段。

291、每个阶段都以键值对作为输入和输出。

292、Map阶段的输入时NCDN原始数据。

293、键是相对稳健起始位置的偏移量。

294、Mapper类是一个泛型,四个参数:

1、输入键

2、输入值

3、输出键

4、输出值

295、Hadoop本身提供了一套可优化网络序列化传输的基本类型:

LongWritable 相对于 Java 的Long

Text 相对于String

IntWritable相对于Integer

296、Map()方法提供了context实例用于输出内容的写入。

297、Job对象指定作业执行规范。

298、构造Job对象后,需要指定输入和输出数据的路径。

299、在调试MapReduce作业时,知道作业ID和任务ID是非常有用的。

300、虚类相对接口更有利于扩展。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值