当前课程知识点:高级大数据系统 > Basics of Linux Data Processing > Manipulating Data on Linux > Video
各位同学大家好
我们在之前的课程已经给大家介绍了
我们这门课将会给大家说些什么东西
我们会介绍大数据的这个分布式系统
包含了分布式的文件系统
分布式的这个大数据并行计算系统
然后有这个内存化的这种数据处理框架
以及流式数据处理的这种模型等等
那么为了让大家更容易上手
我们这门课程
今天我们会给大家做一堂
这个基础的这种辅导
那么具体来说
我们会去介绍怎么样使用一个linux的单机
以及linux集群
进行简单的这种数据处理和数据挖掘
那么我们的目标主要是让大家熟悉
linux底下的这种数据操作
以及linux底下的一些常用的命令能够帮助大家
在后面这种具体的大数据系统中
更好地完成大家的这个学习任务
那么今天我们的主要内容会去讲这个单机
在一个单一的这个linux的server上怎么样去处理数据
以及怎么样在一个简单的这个linux集群上去处理数据
那么这些数据处理都不涉及到
我们后面要讲的这些
具体的系统比如说HDFS
或者是hadoop
而只是在一个原生的linux的服务器
或者集群上去进行
那我们首先来看怎么样
在一个linux的单个的服务器上去进行数据处理
当然我们进行数据处理的第一步
就是说我们怎么样登录到这个linux服务器
如果各位还没有使用过linux的机器
我建议大家在这门课的学习中
尽可能的去使用linux作为你们的工作环境
那么我们来看在linux上
我们怎么样能够登录到这个一个linux的服务器
linux通常使用这个SSH
作为它的一个登陆的这样一个服务
那么SSH和大家在windows上用的
这个远程桌面类似
它是一个让用户从远端连接到
一个服务器的这样一个方式
我想大家肯定都有用远程桌面的这样一个经验
可能不少的同学也都使用过这个SSH
那么我会给大家介绍一下
当你使用这个SSH的时候
应该是怎么去做的
那么在我的这个桌面上
我现在已经打开了一个这个
我现在已经打开了这样一个可以
已经去使用这个linux的这样一个终端
如果各位是使用windows的情况
如果是使用windows的话
实际上你们是需要去下载一些
特定的软件来使用这个SSH
比如说这个putty
putty实际上就是一个
在windows下可以进行
SSH连接的这样一个客户端
那么这边我假设大家已经有了
这样的一个客户端
那么在我的桌面上
我现在要去连接一个linux服务器的话
我就可以直接用SSH这个命令
这边我连接一个服务器给大家看一看
比如说我要连接的服务器
它的这个IP或者是域名我是知道的
那么我们这边的例子是一个
我们自己的服务器
那么这样我就可以连接上它了
那么在特殊的情况下
我们还需要指定用户名
比如说我在这个服务器上
有一个用户名叫做王智是我的名字
那么我打开了这个SSH的端口是222
那么现在把端口也输入进去
现在我敲回车之后我的电脑
就开始连接这台服务器
现在我已经连上了这台服务器
这是远端的一个服务器
有了服务器之后
实际上我们就可以进行一些
服务器上的数据操作
那么我们进行什么样的数据操作呢
实际上在进行之前
我们都需要把数据想办法
从我们本机或者是其他远端的地方
复制到这个服务器上
那么在这个linux下复制
数据实际上也有很多的办法
那么在这个ppt里面我们给大家列了这样一些方法
我们可以通过SCP
通过SCP那么利用刚刚我们已经使用SSH
把数据传输过去
SCP基于SSH协议
在SSH协议上包了一层
那么可以通过SSH
来进行数据的传输
然后我们还可以有更加完善的
这样一个基于SSH的文件系统
那么在ppt中这个例子
实际上给到大家一个文件系统的适应
你可以像使用本地文件一样
透过SSH去操作远端的文件
也可以把本地的文件
和远端的文件进行交换
FTP
大家可以通过在服务器上搭建FTP服务器
通过本地的这个FTP客户端和服务器进行交换
wget
那么wget大家可以通过
在服务器上运行wget把远端的一个文件下载到本地
这是我们通过这些文件的
这种传输的命令进行
文件传输的一个操作
那这边我也给大家演示一个
如何进行文件复制的一个例子
那么大家可以看到
我本地有3个文件
现在我会把这3个文件中的1.txt
复制到远端的一个服务器
那么使用SCP
我们刚刚已经说
我的服务器的端口是2222
那么我把本地的一个文件
叫做1.txt复制到远端
那么远端的什么目录下呢
是我的home目录底下
那这样一个命令就完成了
从本地把文件复制上去的一个操作
我们可以进一步登录到
刚刚的服务器去检查这个文件
是不是真的已经上传上去
我们发现在这边已经多了一个1.txt
那么这个文件从本地传到了远程服务器
那么接着我可以在远程服务器上
进行一系列的这个操作
好
经过上面两步的话
实际上大家已经有了一些数据
在服务器上也可以连接到
这些服务器进行服务器的命令
那么下面我们就通过一些
原生的这个linux的程序
不需要大家额外去安装
而是使用它系统自带的
或者大部分系统自带的
通过这些程序去操纵数据
那么第一个
我们要使用的是什么呢
叫做file
实际上在linux底下
我们经常是需要去知道
我们当前处理的数据
到底是个什么样的文件
比如说在我目前的这个目录底下
我有两个txt和pdf
大家通过它的后缀名扩展感觉它好像是pdf
那实际上它可能不是
因为我可以给他们任何可用的扩展名
那么你是不能去确定的
那么我们现在来看
我们通过file命令
可以做到一些什么样的事情
比如说我们file
我们加上a.pdf
那么我们看到它显示了这样的信息
那么它是一个pdf的文件
它的版本号是1.5
所以我可以有理由相信
它就是一个pdf
版本号是1.5
这时候如果我通过文件的重命名
我把a.pdf命名成
a.txt又会怎么样呢
这时候我简单的通过文件名的话
我肯定觉得他应该就是一个文本文件txt
但实际上我们用文件这个命令
来打开txt的话
我们发现它的显示依然是pdf
说明在这个linux的命令里面
实际上他对文件的一个判断
并不是依赖于它的扩展
而是依赖于他对文件
整个结构整个文件的信息进行读取之后得到的
所以我们不再需要
去对扩展名进行记忆
我们只需要知道
我们只要用file
就可以去知道这些文件到底是做什么用的
是有什么样的这个属性
它是什么样的版本
那么这个是我们能够
去查看这些文件的第一步
那么 第二步
我们想知道这些文件到底有多大
这也是我们在处理数据的时候
肯定非常关心的一个问题
在linux底下
我们会用LS list
这样一个命令对文件进行查看
我们打入LS之后可以在
本地看到它有这样3个文件
那么我们想知道更多文件信息的时候
我们可以用LS的一些参数
比如说LH
就让他按照详细的信息
并且按照人能够容易读懂的
这样一个模式显示出来
我们发现这个文件的
一些详细信息被显示了出来
包含了它的权限
然后它的这个用户和组
以及它的大小创建的时间
这样的一些信息
所以这个信息会帮助
我们能够很好地知道这个文件
它在物理空间上的一个情况
假设我们处理的是一个文本的这种数据文件
我们可能还想知道这个文件
到底有多少个字符或者多少行
那么我们可以进一步利用一个
叫做word count的这个命令
比如说我们想知道行数的时候
我们可以把1.txt
按照这个word count给显示出来
我们发现这个文件是7行
我们可以验证
把这个文件真的打印出来看一下
所以这个文件包含了7行数据
当我们的文件的数据比较大的时候
实际上我们可以通过这样的办法
把这个数据给做一个
简单的初步的一个统计
我们知道大概需要编多大的
多么复杂的程序来处理这个数据起到这样的目的
好
我们刚刚说已经可以连到服务器
并且有了数据
那么我们也能大概的知道
这些文件它的基本的一些属性
那么下一步我们就是需要真正的去操控数据
那么在操控数据之前
我们需要去查看这些数据到底是怎么样
我们刚刚已经给大家演示了
more这个命令
more是让指定的这个文件
投影到屏幕上的一个操作
它可以把文件的内容
打印到屏幕上
那么另外的一个命令
或者说功能更强大的命令是less
他也是把这个文件的数据
打印到屏幕上
只不过大家发现它重新
开启了一个新的一页
那实际上大家在使用当中
这两个命令通常是可以互换的
在没有特别的要求的情况下
那么还有一个命令叫做head
在我的ppt上面已经列到了
head他的这个命令的含义
和它的语义是一样的
它把这个文件的头部给显示出来
我们可以看一眼1.txt
那么我们发现他把1.txt
所有的都显示出来了
那这个原因是因为我们
这个文件的行数比较少
那我们现在可以把1.txt变得比较长
我们假设打开这个1.txt进行编辑
我们让它变成一个更加长的这样一个文件之后
看看它的效果是什么样的
好 我们现在把1.txt
再用head给打印出来
现在我们看到1.txt打印的是它头的这几行
那么尾对应的也是相同的含义
我们可以用tail把1.txt
末尾的几行给打印出来
大家可以看到这是末尾的几行
那么有了head和tell
实际上我们就有办法
将这个比较大的文件
比如说几百兆
或者是几个G的文件
进行一个头和尾的一个查看
那么当我们运用这个head和tail的
一个组合的话
实际上我们是有办法
进行任一行的一个查看
那么我们来看看这个是怎么做的
那么head有一个参数叫做L
我们来看这个L起到一个什么样的作用
had有一个这个参数叫做N
我们来看看这个参数N
能够起到什么样的作用
那么 我们打入N之后
实际上它起到的作用
就是说我们不再按默认的这个行数把文件的
头或者尾给显示出来
而是按照我们指定的这个行数
那么指定的行数在N里面给出了
那现在就是一行
我们看到head可以把第一行给显示出来
那当我要把一个很大的文件的
中间某几行显示出来的时候
我们常常需要用到的命令
就是head和tail的一个组合
那具体来说是这样的
比如说我们想将这个文件的
第五行给显示出来
那么我们需要做的呢
就是说我们让他把头五行给输出出来
然后我们再接一个管道
用tail让它的最后一行输出出来
那么这时候我们就可以看到
这个情况是什么样了
当然前面我们继续用一个管道
把这个文件输出给head
好
这时候我们可以看到
它把第五行给输出了出来
在这里
对于大家查看大文件的时候
这种技巧是很有帮助的
可以帮助大家对文件的
任何一段显示出来
而不需要在整个屏幕上去做查找
有了这个more, less
head和tail之后
实际上大家已经可以去查看
一个文本文件任何的位置
那么不管这个文件大或者不大
大家都可以在有限的屏幕空间里面把它显示出来
做到对这个数据的查看的这样一个目标
那么下面我们就会
跟大家介绍一下
如果我们要对数据进行一定的操控
大概有一些什么样的方法
第一个命令呢叫做cat
cat这个命令实际上和more很像
它是把文件里的这个数据输出到屏幕
我们可以看一下
cat 1.txt
我们发现它把整个文件中
包含的数据打到了这个屏幕上
那么cat既然它是用来操纵数据的
那么它的功能自然不简单的只是查看数据
我们来看我们用cat的操控数据的时候能做到什么
我们经常会做的一个操作
就是将两个文件进行合并
那么在ppt中的这一页
大家可以看到
我们要将两个文件
合成一个长的文件
我们来看cat是怎么做到这一点
实际上非常简单
它是把两个文件并列的
作为这个cat的输入
比如说我们现在用的是一和二
那么它的输出变成了
这样的一个样子
大家还记得
这部分是英文字母是这个
1.txt中的内容
而数字的这一部分
是2.txt中的内容
这样我们就可以把多个小文件
合成一个大文件
那么在某一些数据处理当中
我们可能需要做这样的操作
还有一种对文件的合并
实际上我们可能并不是特别想
按照行的这种方式把它简单的累加到一块
我们是需要它再列上做一些组合
比如说在我们屏幕的这个例子当中
我们分别有若干行
第一个数据集和若干行第二个数据集
我们现在想对这两个数据进行横向的扩展
也就是说
如果我们把它当成表格
我们想把它们的列
给进一步的拓宽
那我们来看使用什么样的命令来做这件事
那这个命令叫做paste
paste的这个含义
就是将两个文件进行横向的
进行列方向的一个扩宽
我们来看在我的电脑上
刚刚我们已经看到有两个文件
一个叫1.txt
一个叫2.txt
我们现在来对两个文件进行
paste的操作
看看是什么样的效果
1.txt
2.txt
那么这两个文件
我们是希望它能够把
两个这个小文件合成一块
并且是按照列的方向进行扩展
我们来看一下效果
它的确实现了我们的目标
我们发现两个文件
它们最开始的部分被合并到一块
并且这个命令它是能够对
这个两个文件不一致进行容忍的
它只是将原本的一个文件超出
另外一个文件的这个行给原封不动地粘了过来
所以运行不会出现什么样的错误
如果大家在真实应用这个数据进行两个文件
进行这个列的扩展的时候
实际上大家是需要去注意一下
比如说有没有因为你的数据操作之前的一些失误
或者说一些错误数据噪声数据的存在
导致这个两个行数不一样
那么你得到的结果
可能会出现问题
那这时候
可能我们就需要通过其他的程序
或者其他的这个观察
我们把中间的这种空行
或者是错误的行给删除掉
那这是用paste的进行拓展的时候
我们需要注意的一个事情
-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--作业