当前课程知识点:高级大数据系统 > Basics of Linux Data Processing > Using a Linux Cluster > Video
我们刚刚讲了
在单机上怎么样去运行程序
以及怎么样去用一些小技巧
让运行程序的过程尽可能的流畅
那下面我们来给
大家简单介绍一下
怎么在一个原生的这个集群上去运行命令
从而达到进一步并行化的程序的
这样一个目标
那么所谓的原生的一个集群
就是说在这个集群里面
用户并没有去安装hadoop
或者是分布式文件系统等等
这样的高级大数据的这种系统
而是仅仅装了这个Linux
并且通过网络把它们连接起来
那我们怎么样去在这样的一个
环境下运行Linux程序
并且来处理我们的数据
那在这里最简单的
一个思路就是说
我们能不能像在本机一样
去运行命令
如果我们能像在本机一样
去运行命令
那实际上这个目标
我们就做到了
实际上Linux给我们提供了
这样的一个方法
让我们在这个分布式文件系统
在这个集群的这样一个环境下
也能够运行
简单的Linux的命令
那具体来说它是这样的
我们依然使用SSH这个命令
那么我们输入用户名
我们输入这个
要执行命令的这样一个主机
然后port
那最后我们在这个SSH命令之后
实际上我们还可以进一步输入
如果我们不输入的话
实际上我们就登陆到了
这台机器上
但是如果我们在这后面
不直接输入回车
而是打入一个新的命令的话
实际上我们是
可以在远程的一个机器上
执行一个命令
并且把命令通过SSH
命令的输出通过SSH
传回到本机
并且显示到屏幕上
那么我们可以执行LS-L
实际上大家看到的这个目录
就是在远程的
一个Linux主机上
我们运行LS之后
显示的一个结果
大家可以看
当我在本地运行LS-L的时候
那么它显示的是
我本地的一个文件的情况
而这边显示的是
远程主机的一个文件的情况
所以有了这样
一个简单的命令之后
我们就可以很容易的
把原来我们在单机上处理
这个数据的方法
给运行到这个服务器上
那么它的这个思路是什么样呢
我们可以写一些脚本
把这个SSH命令给切入进去
然后跟上我们后面
要运行的各种各样的程序
当然还有更加高级的一些方法
就像我们在这页PPT里面所演示的
我们可以通过一些已经编制好的
这种程序
来进行这种远程的命令的调用
那么在这些程序里面
它会自动的帮我们把
我们执行的命令
应用到多个不同的服务器上
那这是大家在实际的使用中
可以去尝试的一些方法
那么利用这两种方法
我们真正在处理数据的时候
实际上我们就可以去写一个batch的脚本
也就是说我们去写一个批处理的文件
在这个文件里面
我们会包含很多很多的
这个执行行
那么这个执行行配合
我们刚刚说到的这种
把进程抛到后台运行的方法
其实就可以达到
在多机上运行的一个目标
那在这边我们给大家演示一个
如何写这样一个程序的一个例子
那么我们同样创建一个叫做
run_cluster.sh的一个文件
那这个文件我们怎么写呢
我们大致的思路是这样的
我们SSH到服务器1
那么sever1
然后在服务器上运行的是cmd.sh
假设是这样一个
那么我们会把这个命令
复制多份
那么我们会加上
不同的sever
比如说2 3 4
然后1 2
我们假设在1号服务器
2号服务器上
分别运行了两个
当然这后面我们
还可以接更多的参数
让你的运行更加的定制化
那么我们需要把这几个命令
同时运行起来
所以我们在后面加上了
把它放到后台的这样一个操作
使得这几个命令
可以并行起来
达到同时在多个server上
运行这些程序的目标
当然我们的这个程序
是事先已经部署在server上了的
那这是我们需要提前去操作好的
这些程序部署在server上
让我们才能通过
在一个位置去运行
这些程序的一个目标
那么大家肯定会想
那这个过程实际上
还是比较麻烦的
那么第一个麻烦是什么呢
我们首先用ssh
登录到这些服务器的时候
那ssh可能会要求
我们输入密码
那么这个解决办法呢
我们是可以通过公钥和私钥的
这样一个配置的办法
把我们本机生成的ssh的
一个公钥复制到服务器上
那么下次我们再登录
这台服务器的时候
就不需要输入密码
这样其实我们的命令
就很像是在本机上运行
除了它的延迟比较大
第二个问题就是说
我们还需要提前把
程序部署上去
这个过程我们能不能
做的比较简单比较自动化呢
同样
我们也是可以去做的
回想我们刚刚在
每个server上
我们都可以去执行一个
叫做crontab的这样一个命令
那么crontab实际上是往我们
定期的去做一个事情
我们实际上是可以借助crontab
来实现整个程序部署的
一个自动化
也就是说
我们可以指定在
各个服务器上运行的程序
比如说有1000台服务器
它们会定期的
到我们的某一个特定的
部署程序的服务器上下载
我们生成好的这样
一个新的数据文件
这个数据文件和程序
会被download到各个运行的
集群的服务器上
这个过程实际上
是不需要用户去干预的
它会自动完成
由于crontab的特性
比如说我们用wget
可以把我们的这个程序
下载到各个服务器上
而我们只需要在这个部署的数据
和程序的这个服务器上去做修改
我们只需要在单点进行控制
就可以达到对整个系统中的
数据和程序进行一个调控
和我们其他的这种大数据
后面会介绍到它的思想是一致的
我们配置了这样一个中心的
这样一个部署程序的位置之后
其实当服务器
把数据下载回去之后
我们就会进一步让crontab
来制定它们在本机上
去运行这个程序
达到了自动运行
这些分布式的数据处理程序的
这样一个目标
他的思路和我们刚刚
从单机去运行多机上的这个程序
是一致的
但它的方法却做到了
完全的自动化
我们仅仅需要非实时的
在一个中心的位置去调控程序
就可以达到这样的一个目标
我们刚刚讲了
大家可以在单机的这个Linux server
和一个server集群上进行数据的处理
那么大家也学到了一些基本的linux的命令
也学到了怎么样通过SSH远程的执行命令
并且通过crontabl加wget的方式
在一个中心的服务器上
指定要运行的
这个程序和数据
那么大家可能会问的
一个很自然的问题
就是如果没有这些server怎么办
那么由于我们的课程
是针对各种各样的同学以及工程人员的
那么我们现在就给大家介绍
怎么样达到自己能够
拥有一定的这个server资源的
这样一个目标
那么大概有几种方式
你可以去获得这个server的
这样一个资源
第一个我们可以使用云计算的平台
那么EC2还有这个阿里云
腾讯云等
都是大家可以去使用的资源
大家可以通过这个按需付费
按需分配的方式
来获得你需要的这种云计算资源
包括在上面分配这种虚拟机
这些虚拟机大家可以去安装linux的系统
然后只需要经过几分钟的时间
大家就可以在远端
在云上有一个自己的服务器
那么大家如果不愿意付
这个很少的这个云计算的服务费的话
依然可以使用一些免费的平台
比如说planetlab
然后phonelab实际上
都是大家可以去使用的一些
这种免费的linux主机
以及一些data
这种center的硬件资源
同样
大家可以向我们的课程申请使用
我们课程提供的一些这种免费的资源
当然如果有用户的量比较多的话
可能我们的这个小的集群
可能会出现延迟比较大
或者说服务质量不是特别高的现象
但是这几种资源的形式
都是大家可以去在我们的课堂上利用的
那么我重点介绍一下
大家使用云计算资源
应该去怎么做
那么使用云计算
我们这边介绍的是Amazon EC2这个例子
实际上大家使用阿里云或者是腾讯云
应该是有类似的这样操作的
我们使用的这个云的服务模式
应该是叫做RAS基础设施及服务
这样的一个模式
也就是说我们可以分配出
类似于真实机器的
这样的一些基础设施
那么它给用户看起来
就像是一个真实的linux server
包含它的CPU资源
网络资源
ip资源以及它的存储资源
我们甚至可以去自定义
自己的硬件的情况
比如说你要不要有GPU
要不要有CPU
CPU上有多少个核
你的内存要有多大
那么都是能够在数十分钟之内
就可以完成一个任务
那么这边是EC2的一个情况
我们可以看到它的价格
我们可以看到
它的一些资源的分配的情况
那么在EC2里面
有大量的这种在amazon里面
它其实有大量的资源
你可以去虚拟化
可以去分配
那么包含了我们刚刚讲到的
一些硬件的资源
一些这种甚至是软件的资源
那么拥有这些资源之后
大家不但可以用来做数据的处理
它们甚至可以用来做数据的存储
以及后面的这种数据的一个服务
甚至是部署在web
上面的一些具体的这种应用
那么针对EC2的话
当大家分配好一个EC2的节点之后
我们大概会看到
这样的一个控制的一个面板
它可以显示你分配的一个EC2的虚拟机
它的一些基本的信息
包含它的网络的信息
存储的信息
以及它其他的一些密钥
以及安全的信息
那么如果一切信息都没有问题的话
大家就可以把实例给运行起来
EC2的一个虚拟机
叫做一个instance
大家把这个实例运行起来之后
那么amazon就会开始计费
那么在通知面板里面
大家还可以去查看
你当前运行的
这些服务器的情况
如果你运行的不止一台
实际上你是可以通过一个内网
把这些服务器连接起来
组织成一个你自己的小的
这样一个虚拟cluster
虚拟机群
那么在集群上能够干的事情
实际上你在当前
这个amazon的EC2上
你都可以做
那么在这个集群里面
我们同样还可以
对网络进行管理
比如说当我们在
进行某一些数据处理任务的时候
我们可能需要我们的机器
离我们的数据源相对近一些
那这时候我们是可以
把我们的amazon机器
分配到与它比较近的一个区域
比如说我们的数据源在美国
那我们可以选择
美国离它比较近的site
进行资源的一个分配
那么同时我们可以去配置
我们instance它网络的一个状况
比如说我们需要有不同的ip address
或者我们需要有什么样
质量的一个内网的ip
和instamce之间传输数据的
这样一个连接的一个质量保证
这是可以在这里面得到配置的
那么值得一提的是
尽管EC2是对所有人都开放的
但是它针对研究针对教育
还有特别的优惠
也就是说大家可以
通过自己的学生身份
或者说大家参与课程的
这样一个身份
可以去申请到EC2
一些比较优惠的
使用他们EC2节点的支持
那么这种支持的方式
通常是以点数的方式
给到每个同学的这样一个账号
当然大家需要通过申请
大家拿到这样一个免费的
使用时长之后
实际上就可以完成很多
我们课堂或者课堂以外的
这种服务器资源的一个使用
-What is big data and what is big data system?
--Video
-Problems in big data systems?
--Video
-Overview of the course
--Video
-Principles of big data system design
--Video
-Manipulating Data on Linux
--Video
--Video
--Video
-Basics of Linux Data Processing--Manipulating Data
-Running Commands on a Single Machine
--Video
-Running Commands on a Single Machine--作业
-Using a Linux Cluster
--Video
-Using a Linux Cluster--作业
-Storage for Big Data Computing: Distributed file system
--Video
-Storage for Big Data Computing: Distributed file system--作业
-File system and GFS
--Video
-File system and GFS--作业
-Understanding HDFS using Legos
--Video
-Understanding HDFS using Legos--作业
-File System Implementation and DFS
--Video
--Video
-File System Implementation and DFS--作业
-What is MapReduce and why
--Video
-What is MapReduce and why
-Learn MapReduce by playing with cards
--Video
-Processing pattern
--Video
-Processing pattern--作业
-Hadoop
--Video
-Hadoop--作业
-Algorithms in MapReduce
--Video
-Algorithms in MapReduce--作业
-Tutorial
--Video
-Background
--Video
-Background--作业
-Spark
--Video
-Spark--作业
-Use Spark for data mining
--Video
-Use Spark for data mining--作业
-Spark data processing
--Video
-Spark data processing--作业
-Experiment in Spark
--Video
-Experiment in Spark--作业
-Introduction to streaming data processing
--Video
-Introduction to streaming data processing--作业
-Storm
--Video
--Video
--Video
-Storm--作业
-Spark streaming
--Video
--Video
-Spark streaming--作业
-NoSQL introduction
--Video
-NoSQL introduction--作业
-Common Advantages
--Video
-Common Advantages--作业
-Bigtable
--Video
-Bigtable--作业
-Master Startup
--Video
-Master Startup--作业
-HBase
--Video
-HBase--作业
-What is GraphDB and Graph data processing
--Video
-What is GraphDB and Graph data processing--作业
-Graph systems
--Video
-Graph systems
-Example of a GraphDB
--Video
-Example of a GraphDB--作业
-Mahout
--Video
-Mahout--作业
-Case Study: Recommendation
--Video
-Case Study: Recommendatio作业
-Recommendation in Mahout
--Video
-Recommendation in Mahout--作业