Distributed Systems MIT - Introduction总结

1.Main Topics

  • Storage.(存储)
  • Communication.(通信)
  • Computation.(计算)

2. 什么是Distributed systems:

·多台电脑合作完成
·大规模数据集运算,如:MapReduce,点对点共享
·许多设施是分布式的

3. Distributed systems功能:

·通过多线程并行操作,提高性能
·通过生成副本,避免文件丢失
·可以将计算放在离外部实体更近的地方
·通过隔离增加系统的安全

4. Topic

  • implementation(实现):RPC、线程、并发控制
  • performance(性能):我们想要提供一个性能可以扩展的系统,通常需要更好的设计而不仅仅是更多的计算机,数量的增多也会带来负载不均衡等问题。
  • fault tolerance(容错):对应用程序隐藏这些故障,我们希望系统拥有可用性、可恢复性,如果一台服务器宕机,可以继续使用其他服务器。
  • consistency(一致):想要达成正确工作的系统十分困难,一致性与性能存在矛盾,服务器节点能难保证相同,KV服务。

4. MapReduce

MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)“和"Reduce(归约)”,是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。

函数式编程思想构建成抽象模型 — Map 和 Reduce,隐藏系统底层细节,编程方便,不够灵活。即 MapReduce的思想是,应用程序设计人员和分布式运算的使用者,只需要写简单的Map函数和Reduce函数,而不需要知道任何有关分布式的事情,MapReduce框架会处理剩下的事情。

  • Job:整个MapReduce计算称为Job。
  • Task:每一次MapReduce调用称为Task。

对于一个完整的MapReduce Job,它由一些Map Task和一些Reduce Task组成。所以这是一个单词计数器的例子,它解释了MapReduce的基本工作方式。

Map函数使用一个key和一个value作为参数。key是输入文件的名字,通常会被忽略,因为我们不太关心文件名是什么,value是输入文件的内容。

Reduce函数的入参是某个特定key的所有实例(Map输出中的key-value对中,出现了一次特定的key就可以算作一个实例)。所以Reduce函数也是使用一个key和一个value作为参数,其中value是一个数组,里面每一个元素是Map函数输出的key的一个实例的value。

Example: word count

  input is thousands of text files
  
  Map(k, v)
    split v into words
    for each word w
      emit(w, "1")
      
  Reduce(k, v)
    emit(len(v))

你可能感兴趣的:(笔记,mapreduce,hadoop,大数据)