0


关于Hadoop不得不看的小知识

1.Hadoop生态圈相关组件

Hadoop是目前应用最为广泛的分布式大数据处理框架,其具备可靠、高效、可伸缩等特点。
Hadoop的核心组件是HDFSMapReduce。随着处理任务不同,各种组件相继出现,丰富Hadoop生态圈,目前生态圈结构大致如图所示:

1.1.HDFS(分布式文件系统):

HDFS是整个hadoop体系的基础,负责数据的存储与管理。HDFS有着高容错性(fault-tolerant)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。

1.2.MapReduce(分布式计算框架):

MapReduce是一种基于磁盘的分布式并行批处理计算模型,用于处理大数据量的计算。其中Map对应数据集上的独立元素进行指定的操作,生成键-值对形式中间,Reduce则对中间结果中相同的键的所有值进行规约,以得到最终结果。

1.3.Spark(分布式计算框架);

Spark是一种基于内存的分布式并行计算框架,不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

1.4.Flink(分布式计算框架):

Flink是一个基于内存的分布式并行处理框架,类似于Spark,但在部分设计思想有较大出入。对 Flink 而言,其所要处理的主要场景就是流数据,批数据只是流数据的一个极限特例而已。

1.5.Yarn/Mesos(分布式资源管理器):

YARN是下一代MapReduce,即MRv2,是在第一代MapReduce基础上演变而来的,主要是为了解决原始Hadoop扩展性较差,不支持多计算框架而提出的。
Mesos诞生于UC Berkeley的一个研究项目,现已成为Apache项目,当前有一些公司使用Mesos管理集群资源,比如Twitter。与yarn类似,Mesos是一个资源统一管理和调度的平台,同样支持比如MR、steaming等多种运算框架。

1.6.Zookeeper(分布式协作服务)

解决分布式环境下的数据管理问题:统一命名,状态同步,集群管理,配置同步等。
Hadoop的许多组件依赖于Zookeeper,它运行在计算机集群上面,用于管理Hadoop操作。

1.7.Sqoop(数据同步工具):

Sqoop是SQL-to-Hadoop的缩写,主要用于传统数据库和Hadoop之前传输数据。数据的导入和导出本质上是Mapreduce程序,充分利用了MR的并行化和容错性。
Sqoop利用数据库技术描述数据架构,用于在关系数据库、数据仓库和Hadoop之间转移数据。

1.8.Hive/Impala(基于Hadoop的数据仓库)

Hive定义了一种类似SQL的查询语言(HQL),将SQL转化为MapReduce任务在Hadoop上执行。通常用于离线分析。
HQL用于运行存储在Hadoop上的查询语句,Hive让不熟悉MapReduce开发人员也能编写数据查询语句,然后这些语句被翻译为Hadoop上面的MapReduce任务。
Impala是用于处理存储在Hadoop集群中的大量数据的MPP(大规模并行处理)SQL查询引擎。 它是一个用C ++和Java编写的开源软件。 与Apache Hive不同,Impala不基于MapReduce算法。 它实现了一个基于守护进程的分布式架构,它负责在同一台机器上运行的查询执行的所有方面。因此执行效率高于Apache Hive。

1.9.HBase(分布式列存储数据库)

HBase是一个建立在HDFS之上,面向列的针对结构化数据的可伸缩、高可靠、高性能、分布式和面向列的动态模式数据库。
HBase采用了BigTable的数据模型:增强的稀疏排序映射表(Key/Value),其中,键由行关键字、列关键字和时间戳构成。
HBase提供了对大规模数据的随机、实时读写访问,同时,HBase中保存的数据可以使用MapReduce来处理,它将数据存储和并行计算完美地结合在一起。

1.10.Flume(日志收集工具)

Flume是一个可扩展、适合复杂环境的海量日志收集系统。它将数据从产生、传输、处理并最终写入目标的路径的过程抽象为数据流,在具体的数据流中,数据源支持在Flume中定制数据发送方,从而支持收集各种不同协议数据。
同时,Flume数据流提供对日志数据进行简单处理的能力,如过滤、格式转换等。此外,Flume还具有能够将日志写往各种数据目标(可定制)的能力。

1.11.Kafka(分布式消息队列)

Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。实现了主题、分区及其队列模式以及生产者、消费者架构模式。
生产者组件和消费者组件均可以连接到KafKa集群,而KafKa被认为是组件通信之间所使用的一种消息中间件。KafKa内部氛围很多Topic(一种高度抽象的数据结构),每个Topic又被分为很多分区(partition),每个分区中的数据按队列模式进行编号存储。被编号的日志数据称为此日志数据块在队列中的偏移量(offest),偏移量越大的数据块越新,即越靠近当前时间。生产环境中的最佳实践架构是Flume+KafKa+Spark Streaming

1.12.Oozie(工作流调度器)

Oozie是一个可扩展的工作体系,集成于Hadoop的堆栈,用于协调多个MapReduce作业的执行。它能够管理一个复杂的系统,基于外部事件来执行,外部事件包括数据的定时和数据的出现。
Oozie工作流是放置在控制依赖DAG(有向无环图 Direct Acyclic Graph)中的一组动作(例如,Hadoop的Map/Reduce作业、Pig作业等),其中指定了动作执行的顺序。
Oozie使用hPDL(一种XML流程定义语言)来描述这个图。
原文链接:https://blog.csdn.net/centrl/article/details/124873086

2.MapReduce的特点及运行架构

和HDFS一样,MapReduce也是採用Master/Slave的架构,其架构图例如以下所看到的。

2.1 优点
1)MapReduce 易于编程
它简单的实现一些接口,就可以完成一个分布式程序,这个分布式程序可以分布到大量廉价的PC机器上运行。也就是说你写一个分布式程序,跟写一个简单的串行程序是一模一样的。就是因为这个特点使得MapReduce编程变得非常流行。

2)良好的扩展性
当你的计算资源不能得到满足的时候,你可以通过简单的增加机器来扩展它的计算能力。

3)高容错性
MapReduce设计的初衷就是使程序能够部署在廉价的PC机器上,这就要求它具有很高的容错性。比如其中一台机器挂了,它可以把上面的计算任务转移到另外一个节点上运行,不至于这个任务运行失败,而且这个过程不需要人工参与,而完全是由Hadoop内部完成的。

4)适合PB级以上海量数据的离线处理
可以实现上千台服务器集群并发工作,提供数据处理能力。

2.2 缺点
1)不擅长实时计算
MapReduce无法像MySQL一样,在毫秒或者秒级内返回结果。

2)不擅长流式计算
流式计算的输入数据是动态的,而MapReduce的输入数据集是静态的,不能动态变化。这是因为MapReduce自身的设计特点决定了数据源必须是静态的。

3)不擅长DAG(有向无环图)计算
多个应用程序存在依赖关系,后一个应用程序的输入为前一个的输出。在这种情况下,MapReduce并不是不能做,而是使用后,每个MapReduce作业的输出结果都会写入到磁盘,会造成大量的磁盘IO,导致性能非常的低下。

原文链接:https://blog.csdn.net/qq_38132995/article/details/124794190

3.spark的特点和与MapReduce的区别

     1.快速:Spark在内存中的运行速度是Hadoop MapReduce运行速度的100多倍,Spark在磁盘中的运行速度是Hadoop MapReduce运行速度的10多倍。Spark的中心数据存放于内存中,有更高的迭代运算效率,而Hadoop MapReduce每次迭代的中间数据存放在HDFS中,涉及硬盘的读写,运算效率相对较低

    2.易用:Spark支持使用Scala、Python、Java、R等语言快速编写应用。此外。Spark提供超过80个高阶算子,使得编写并行应用程序变的简单。而Hadoop MapReduce只支持Scala。

    3.通用:Spark框架包含多个紧密集成的组件,包括Spark SQL(即席查询)、Spark Streaming(实时流处理)、Spark MLlib(机器学习库)、Spark GraphX(图计算),并且Spark支持在一个应用中同时使用这些组件。

    4.随处运行:用户可以使用Spark的独立集群模式运行Spark,随时随地,这里不多加赘述。

    5.代码简洁:Spark一般都使用Sacla或Python编写应用程序。MapReduce实现单词计数可能需要60多行代码,而Spark使用Salca语言实现只需要一行

4.linux的基础命令:

文件与目录操作:
pwd 命令

格式:pwd

功能:显示当前所在目录(即工作目录)。

[root@centos ~]# pwd
实例:

ls 命令

格式:ls [选项] [文件|目录]

功能:显示指定目录中的文件或子目录信息。当不指定文件或目录时,显示 当前工作目录中的文件或子目录信息。

命令常用选项如下:

-a :全部的档案,连同隐藏档( 开头为 . 的档案) 一起列出来。

-l :长格式显示,包含文件和目录的详细信息。

-R :连同子目录内容一起列出来。

说明:命令“ls –l”设置了别名:ll,即输入 ll 命令,执行的是 ls –l 4 命令。

[root@centos /]# ls –a
实例:

[root@centos /]# ls –l
实例:

[root@centos opt]# ls –R
实例:

cd 命令

格式:cd

功能:用于切换当前用户所在的工作目录,其中路径可以是绝对路径也可以 是相对路径。

[root@centos ~]# cd /etc/
实例:

Mkdir 命令

格式: mkdir [选项] 目录

功能:用于创建目录。创建目录前需保证当前用户对当前路径有修改的权 限。参数 -p 用于创建多级文件夹。

[root@centos ~]# mkdir linux

[root@centos ~]# ls

anaconda-ks.cfg linux
实例:

rm 命令

格式: rm [选项]

功能:用于删除文件或目录,常用选项-r -f,-r 表示删除目录,也可以用于 删除文件,-f 表示强制删除,不需要确认。删除文件前需保证当前用户对当 前路径有修改的权限。

[root@centos ~]# rm -rf linux
实例:

cp 命令

格式: cp [选项]

功能:复制文件或目录。

[root@centos ~]# cp /linux/text /opt/
实例:

复制一个目录需加选项 –r

mv 命令

格式:mv [选项]

功能:移动文件或对其改名。常用选项-i -f -b,-i 表示若存在同名文件,则向用户 询问是否覆盖;-f 直接覆盖已有文件,不进行任何提示;-b 当文件存在时,覆盖 前为其创建一个备份。

[root@centos ~]# mv /linux/text /
实例:

cat 命令

格式:cat [选项] [文件]

功能:查看文件内容。常用选项:-n 显示行号(空行也编号)。

[root@centos mnt]# cat -n text
实例:

tar 命令

格式:tar [选项] [档案名] [文件或目录]

功能:为文件和目录创建档案。利用 tar 命令,可以把一大堆的文件和目录 全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便 于网络传输是非常有用的。该命令还可以反过来,将档案文件中的文件和目 录释放出来。

常用选项:

-c 建立新的备份文件。

-C 切换工作目录,先进入指定目录再执行压缩/解压缩操作,可用于 仅压缩特定目录里的内容或解压缩到特定目录。

-x 从归档文件中提取文件。

-z 通过 gzip 指令压缩/解压缩文件,文件名为*.tar.gz。

-f 指定备份文件。

-v 显示命令执行过程。

[root@localhost ~]# ls

[root@localhost ~]# tar Docker.tar.gz

[root@localhost ~]# tar -zxvf Docker.tar.gz -C /opt/

[root@localhost ~]# ls /opt/

用户操作:
useradd 命令和 passwd 命令

格式:useradd 用户名

功能:创建新用户,该命令只能由 root 用户使用。

格式:passwd 用户名

功能:设置或修改指定用户的口令。

[root@centos ~]# useradd xiaoming

[root@centos ~]# passwd 123456 #设置用户密码

[root@centos ~]# passwd xiaoming #更改指定用户密码,暗文显示,两次确认

chown 命令

格式:chown [选项]

功能:将文件或目录的拥有者改为指定的用户或组,用户可以是用户名或者 用户 ID,组可以是组名或者组 ID,文件是以空格分开的要改变权限的文件 列表支持通配符。选项“-R”表示对目前目录下的所有文件与子目录进行相同 的拥有者变更。

[root@centos ~]# chown xiaoming:xiaoming text
实例:

chmod 命令

格式:chmod [-R] 模式 文件或目录

功能:修改文件或目录的访问权限。选项“-R”表示递归设置指定目录下的所 有文件和目录的权限。 模式为文件或目录的权限表示,有三种表示方法。

数字表示 用 3 个数字表示文件或目录的权限,第 1 个数字表示所有者的权限,第 2个 数字表示与所有者同组用户的权限,第 3 个数字表示其他用户的权限。每类 用户都有 3 类权限:读、写、执行,对应的数字分别是 4、2、1。一个用户 的权限数字表示为三类权限的数字之和,如一个用户对 A 文件拥有读写权 限,则这个用户的权限数字为 6(4+2=6)。
[root@centos ~]# chmod 777 text
实例:

字符赋值 用字符 u 表示所有者,用字符 g 表示与所有者同组用户,用字符 o 表示其他 用户。用字符 r、w、x 分别表示读、写、执行权限。用等号“=”来给用户赋 权限。
[root@centos ~]# chmod u=rwx,g=rw,o=r text
实例:

su 命令

格式:su [-] 用户名

功能:将当前操作员的身份切换到指定用户。如果使用选项“-”,则用户切换 后使用新用户的环境变量,否则环境变量不变。

[root@centos ~]# su – xiaoming
实例:

exit退出

root用户切换普通用户不需要密码,普通用户切其他普通用户或者root用户需要密码

文本操作:
文本编辑器这里只介绍一个 vi 命令,vim 命令的操作与 vi 一样。

格式:vi [文件名]

功能:vi 是 Linux 的常用文本编辑器,vim 是从 vi 发展出来的一个文本编辑器, 其在代码补全、编译等方便的功能特别丰富,在程序员中被广泛使用。

vi/vim 有三个工作模式:

命令模式 用户刚刚启动 vi/vim,便进入了命令模式。此状态下敲击键盘动作会被 vi 识别为命令,而非输入字符。以下是常用的几个命令:

i 切换到输入模式,以输入字符。

x 删除当前光标所在处的字符。

: 切换到末行模式,用以在最底一行输入命令

[root@centos ~]# vi text

之后输入 i、x 或:会有相应的效果

输入模式

i

左下角显示INSERT表示进入写入模式

在输入模式下可以对文件执行写操作,编写完成后按 Esc 键即可返回命令模式。

末行模式

如果要保存、查找或者替换一些内容等,就需要进入末行模式。以下是常用的几个命 令:

Set nu:每一行显示行号

r 文件名:读取指定的文件。

w 文件名:将编辑内容保存到指定的文件内。

q:退出 vi

wq:保存文件并退出 vi

q!:强制退出 vi,不管是否保存文档内容。(x:强制保存推出)

系统操作:
clear 命令

格式:clear

功能:清除屏幕。实质上只是让终端显示页向后翻了一页,如果向上滚动屏 幕还可以看到之前的操作信息。

[root@centos ~]# clear
实例

hostname 命令

格式:hostname [选项]

功能:用于显示和设置系统的主机名称。在使用 hostname 命令设置主机名 后,系统并不会永久保存新的主机名,重新启动机器之后还是原来的主机 名。如果需要永久修改主机名,需要同时修改/etc/hostname 的相关内容。

常用选项:

-a 显示主机别名,

-i 显示主机的 ip 地址。

[root@centos ~]# hostname
实例:

[root@centos ~]# hostname –i
实例

hostnamectl 命令

格式 1:hostnamectl

功能:显示当前主机的名称和系统版本。

格式 2:hostnamectl set-hostname

功能:永久设置当前主机的名称。

[root@centos ~]# hostnamectl set-hostname xaioming
实例:

ip 命令

CentOS 7 已不使用 ifconfig 命令,其功能可通过 ip 命令代替。

格式 1:ip link dev

功能:对网络设备(网卡)进行操作,选项 add、delete、show、set 分别对 应增加、删除、查看和设置网络设备。

[root@xaioming ~]# ip link show
实例:

格式 2:ip address dev

功能:对网卡的网络协议地址(IPv4/IPv6)进行操作,选项 add、change、 del、show 分别对应增加、修改、删除、查看 IP 地址。

示例: #这里将 address 缩写为 addr

[root@xaioming ~]# ip link show
实例:

[root@xaioming ~]# ip a(一般都习惯这种)
实例

systemctl 命令

格式:systemctl service_name.service

功能:管理系统中的服务,“.service”表示管理的服务均包含了一个 以 .service 结尾的文件,存放于 /lib/systemd/目录中,可以省略。命令选项 有 start、restart、reload、stop、status,分别对应服务的启动、重启、重 新加载、停止和显示状态。另外选项 enable 表示开机时启动,disable 表示 撤销开机启动。

#启动网络服务

[root@xaioming ~]# systemctl start network
#关闭防火墙,注意 CentOS 7 的防火墙服务名称改为 firewalld

[root@localhost ~]# systemctl stop firewalld
#查看 ssh 服务的状态

[root@localhost ~]# systemctl status sshd
#设置 ssh 服务开机启动

[root@localhost ~]# systemctl enable sshd
reboot 命令

格式: reboot

功能:用于重新启动计算机,但是机器重启必须要 root 用户才有权限。

注意:本操作无需在平台系统执行

[root@master ~]# reboot
poweroff 命令

格式:poweroff

功能:用来关闭计算机操作系统并且切断系统电源。如果确认系统中已经没

有用户存在且所有数据都已保存,需要立即关闭系统,可以使用 poweroff

命令。

注意:本操作无需在平台系统执行

[root@master ~]# poweroff
export 命令

格式:export [选项] [变量名]

功能:用于将 Shell 变量输出为环境变量,或者将 Shell 函数输出为环境变

量。一个变量创建时,它不会自动地为在它之后创建的 Shell进程所知,而

命令export 可以向后面的 Shell 传递变量的值。当一个Shell 脚本调用并执行

时,它不会自动得到父脚本(调用者)里定义的变量的访问权,除非这些变

量已经被显式地设置为可用。export 命令可以用于传递一个或多个变量的值

到任何子脚本。

常用选项:

-f 代表[变量名称]中为函数名称。

-n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行

环境中。

-p 列出所有的 Shell 赋予程序的环境变量。

示例:

[root@localhost ~]# export -p #列出当前所有的环境变量
实例:

[root@localhost ~]# export MYENV=8 #定义环境变量,并赋值 MYENV=8
实例:

echo命令

格式:echo [字符串]

功能:用于在终端设备上输出字符串或变量提取后的值。一般使用在变量前

加上$符号的方式提取出变量的值,例如:$PATH然后再用 echo 命令予以

出。

示例:

#输出一段字符串 LinuxCool.com

[root@localhost ~]# echo "LinuxCool.com"
实例:

#输出变量 PATH 值

[root@localhost ~]# echo #PATH
source 命令

格式:source [文件]

功能:用于重新执行刚修改的初始化文件,使之立即生效,而不必注销用

户,重新登录。

示例: #读取和执行/etc/profile 文件

[root@localhost ~]# source /etc/profile
实例:

5.冷备,热备以及温备

热备(在线备份):在数据库运行时直接备份,对数据库操作没有任何影响。
冷备(离线备份):在数据库停止时进行备份。
温备:在数据库运行时加全局读锁备份,保证了备份数据的一致性,但对性能有影响。

6.数据类型

1、 整数数据类型

byte:1个字节,8位,256种状态,取值范围为【-128,127】
short:2个字节,16位,65536种状态,取值范围为【-32768,32767】
int:4个字节,32位,整数类型默认是int类型,取值范围约21亿
long:8个字节,64位,long类型表示long类型常量,要加L或者l,建议加L

2、 小数数据类型

float:4个字节,32位,单精度,能精确到67位,声明一个小数类型,要加F或者f,建议加F
double:8个字节,64位,双精度,能精确到15
16位,小数类型默认是double类型

3、 字符数据类型

char:2个字节,16位,字符表示Unicode(万国码)编码表中的每一个符号,每个符号使用单引号引起来,其中前128个符号和ASCII表相同

4、 布尔数据类型

boolean:占1位,有true和false2个值,一个表示真,一个表示假,一般用于表示逻辑运算

整型的字面类型是 int; 小数型的字面类型是 double
参与运算,会发生类型自动提升,小容量提升大容量
强制类型装换,从大容量 到 小容量,会造成精度丢失
int 参与运算,会自动舍去小数,取整
——————————————
原文链接:https://blog.csdn.net/weixin_66107760/article/details/128534821


本文转载自: https://blog.csdn.net/S19831903790/article/details/136685627
版权归原作者 S19831903790 所有, 如有侵权,请联系我们删除。

“关于Hadoop不得不看的小知识”的评论:

还没有评论