|
所在平台: Coursera |
课程主页: https://www.coursera.org/learn/distributed-programming-in-java
课程评论:没有评论
课程名称:Java中的分布式编程 概述:本课程旨在教授学习者(行业专业人士和学生)Java 8环境下的分布式编程基本概念。分布式编程使开发者能够利用数据中心中的多个节点提高所选应用程序的吞吐量和/或降低延迟。通过本课程的学习,您将掌握使用多种流行的分布式编程框架进行Java编程的方法,包括Hadoop、Spark、Sockets、远程方法调用(RMI)、多播套接字、Kafka、消息传递接口(MPI),以及将分布与多线程结合的不同方法。 课程特色: - 数据中心的服务器都是以分布式服务器集合组织的,学习如何使用多个服务器来增加带宽和减少延迟非常重要。 - 除了了解特定的分布式编程框架,课程还将教您如何将多核和分布式并行性统一整合。 - 每个课程模块都包含一个小型项目,您可以获得必要的实践经验,将所学概念应用到课程结束后的项目中。 - 在课程期间,您将可以在线访问讲师和导师,获得个性化的答疑服务。 学习成果: - 使用Hadoop和Spark框架进行Java的分布式MapReduce编程 - 使用Java的Socket和远程方法调用(RMI)接口进行客户端-服务器编程 - 使用消息传递接口(MPI)进行Java的消息传递编程 - 结合分布式和多线程的各种方法,包括进程和线程、分布式演员以及反应式编程 掌握这些概念将使您能够立即在分布式Java程序中应用它们,并为将来掌握其他分布式编程框架(例如Scala或C++)奠定基础。 课程大纲: 第一部分:分布式MapReduce 本模块学习MapReduce范例以及如何使用Apache Hadoop和Spark项目编写分析以键值对表示数据的分布式程序。我们将研究TF-IDF统计量的计算和PageRank算法的并行化问题。 第二部分:与Two Sigma对话 通过与Two Sigma的管理总监Jim Ward及高级副总裁Dr. Eric Allen的交流,探讨分布式编程的重要性。 第三部分:消息传递 学习如何使用消息传递接口(MPI)库编写单程序多数据(SPMD)模型的分布式应用程序,探讨MPI程序的点对点通信、消息排序和死锁特性,并进行分布式矩阵乘法的实战项目。 第四部分:继续您的学习旅程 了解Java中的并行编程和并发编程的重要性,与Two Sigma的行业专业人士讨论其他课程主题在实际中的应用。
Part: 1
Title:DISTRIBUTED MAP REDUCE
Description:In this module, we will learn about the MapReduce paradigm, and how it can be used to write distributed programs that analyze data represented as key-value pairs. A MapReduce program is defined via user-specified map and reduce functions, and we will learn how to write such programs in the Apache Hadoop and Spark projects. TheMapReduce paradigm can be used to express a wide range of parallel algorithms. One example that we will study is computation of the TermFrequency – Inverse Document Frequency (TF-IDF) statistic used in document mining; this algorithm uses a fixed (non-iterative) number of map and reduce operations. Another MapReduce example that we will study is parallelization of the PageRank algorithm. This algorithm is an example of iterative MapReduce computations, and is also the focus of the mini-project associated with this module.
Part: 2
Title:Talking to Two Sigma: Using it in the Field
Description:Join Professor Vivek Sarkar as he talks with Two Sigma Managing Director, Jim Ward, and Senior Vice President, Dr. Eric Allen at their downtown Houston, Texas office about the importance of distributed programming.
Part: 3
Title:MESSAGE PASSING
Description:In this module, we will learn how to write distributed applications in the Single Program Multiple Data (SPMD) model, specifically by using the Message Passing Interface (MPI) library. MPI processes can send and receive messages using primitives for point-to-point communication, which are different in structure and semantics from message-passing with sockets. We will also learn about the message ordering and deadlock properties of MPI programs. Non-blocking communications are an interesting extension of point-to-point communications, since they can be used to avoid delays due to blocking and to also avoid deadlock-related errors. Finally, we will study collective communication, which can involve multiple processes in a manner that is more powerful than multicast and publish-subscribe operations. The knowledge of MPI gained in this module will be put to practice in the mini-project associated with this module on implementing a distributed matrix multiplication program in MPI.
Part: 4
Title:Continue Your Journey with the Specialization "Parallel, Concurrent, and Distributed Programming in Java"
Description:The next two videos will showcase the importance of learning about Parallel Programming and Concurrent Programming in Java. Professor Vivek Sarkar will speak with industry professionals at Two Sigma about how the topics of our other two courses are utilized in the field.
This course teaches learners (industry professionals and students) the fundamental concepts of Distributed Programming in the context of Java 8. Distributed programming enables developers to use multiple nodes in a data center to increase throughput and/or reduce latency of selected applications. By the end of this course, you will learn how to use popular distributed programming frameworks for Java programs, including Hadoop, Spark, Sockets, Remote Method Invocation (RMI), Multicast Sockets, Kafka, Message Passing Interface (MPI), as well as different approaches to combine distribution with multithreading. Why take this course? • All data center servers are organized as collections of distributed servers, and it is important for you to also learn how to use multiple servers for increased bandwidth and reduced latency. • In addition to learning specific frameworks for distributed programming, this course will teach you how to integrate multicore and distributed parallelism in a unified approach. • Each of the four modules in the course includes an assigned mini-project that will provide you with the necessary hands-on experience to use the concepts learned in the course on your own, after the course ends. • During the course, you will have online access to the instructor and the mentors to get individualized answers to your questions posted on forums. The desired learning outcomes of this course are as follows: • Distributed map-reduce programming in Java using the Hadoop and Spark frameworks • Client-server programming using Java's Socket and Remote Method Invocation (RMI) interfaces • Message-passing programming in Java using the Message Passing Interface (MPI) • Approaches to combine distribution with multithreading, including processes and threads, distributed actors, and reactive programming Mastery of these concepts will enable you to immediately apply them in the context of distributed Java programs, and will also provide the foundation for mastering other distributed programming frameworks that you may encounter in the future (e.g., in Scala or C++).