MENU

分类 Linux运维 下的文章

Solus 切换到清华源

闲来无事试试Solus,的确惊艳,不过好多细节还不完善,官方的源更新也比较慢。
国内清华大学镜像站可以更新Solus,下面是Solus切换更新源到清华大学镜像站的方法:


阅读全文

经典 Fork 炸弹解析

原文出处:saymagic

Jaromil 在 2002 年设计了最为精简的一个Linux Fork炸弹,整个代码只有13个字符,在 shell 中运行后几秒后系统就会宕机:

:(){:|:&};:
这样看起来不是很好理解,我们可以更改下格式:
:()
{
    :|:&
};
:

阅读全文

重置 MySQL 的 root 密码

在Linux下重置Mysql的root密码非常容易,基本的思路是,以安全模式启动mysql,这样不需要密码可以直接以root身份登录,然后重设密码。

测试环境为 CentOS 7, MySQL 5.6

阅读全文

DMZ口、trust口和untrust口的关系

图1 DMZ口、trust口和untrust口关系示意图

1.DMZ

#这个是非武装区,用于服务器 内 外网都可以访问,但还是与内网隔离,就算是黑客把DMZ服务器拿下,也不能使用服务器来控制内网的网络,起到安全的策略。

#外部能访问DMZ

#内部能访问DMZ

2.trust口

#可信任的接口,是局域网的接口,此外网和DMZ无法访问此接口.

#外部不能访问trust口

#DMZ不能访问trust口

3.untrust口

#不信任的接口,是用来接internet的,这个接口的信息内网不接受

#可以通过untrust口访问DMZ,但不能访问trust口

Tcpdump抓包Wireshark实例分析

一、前言

TCP是面向连接的协议,通过三次握手建立连接,当通信完成时,连接要断开(拆除连接),当主动方发起SYN会话请求,等待接受对方的SYN和ACK应答,传输所使用的的流量控制协议是可以变动窗口的传输协议,三次握手的具体过程见下面的实例分析。

二、实例分析

# 抓包场景:在192.168.11.63节点使用抓包命令:

tcpdump -i ge1 “host 192.168.11.192and 192.168.11.63” -w dptest.pcap

#然后在192.168.11.192节点讲准备好的数据文件发送到63节点:

scp -r test 192.168.11.63:/mnt/

# 当数据传送结束后,按下Ctrl+c,tcpdump所抓的数据会存入dptest.pcap文件中;

# 然后使用wireshark将数据解析后,如下图所示:

图 1 wireshark数据解析

(1)ARP广播查询192.168.11.63节点MAC地址

因为192.168.11.192节点向192.168.11.63节点发送数据,192节点首先会检查自己的ARP缓存表,查看是否有主机63IP地址和MAC地址的对应关系,如果有,则会将主机63节点的MAC地址作为源MAC地址封装到数据帧中,如果没有,主机192节点则会发出一个ARP请求,请求的目标IP地址是192.168.11.63,目标MAC地址是MAC地址的广播帧(FF-FF-FF-FF-FF-FF),源IP地址和MAC地址是192节点的IP地址和MAC地址。如图2所示,因为192主机的ARP缓存表中并没有63主机的IP地址和MAC地址,所有192主机发出ARP广播请求“who has 192.168.11.63? Tell 192.168.11.192”,当交换机接受到此广播后,发现此帧为广播帧,然后会将此帧从所有非接受的接口发送出去,当63节点接收到此广播帧时,会校对此IP是否为自己的IP地址,并且将192.168.11.192节点的IP地址和MAC地址对应关系记录在ARP缓存中,同事会发出一个ARP的应答“192.168.11.63 is at 00:10:f3:36:06:f3”,主机192节点收到此ARP应答数据帧后,在自己的ARP缓存列表中记录主机63节点的IP地址和MAC地址的对应关系。在整个过程当中交换机已经学习到了主机192节点和主机63节点的MAC地址信息。

图2 ARP查询

(2)TCP连接

由于scp远程数据拷贝使用的TCP协议连接,在获取目标主机的IP地址和MAC地址后,就要进行TCP连接,首先由192节点发起连接,向63节点发送SYN包,会随机产生一个seq值x,并进入SYN_SEND状态,如下图所示,seq=0;当63节点接收到192节点发来的SYN包请求后,必须确认192节点的SYN(ack+1),同时63节点也发送一个SYN包,并随机产生一个seq值y,如图3所示seq=0,并且包内含有ack值,ack=x+1=1,即SYN+ACK包,此时63节点也进入SYN_SEND状态;当192节点接收到63节点SYN+ACK包后,向63节点发送ACK确认包,ack=y+1,seq=x+1,此包发送完毕后,192节点进入Establish状态,当63节点接收到192节点的ACK确认后,也进入Establish状态。就完成了TCP握手连接。

图3  TCP连接

(3)数据传输阶段

如图4和图5所示,随机选取一段传输信息,显示该帧Frame 20,上线字节数528bite,捕获字节数528bite。

图4 数据传输过程

Arrival Time(到达时间):2016.10.21 13:18:03.633021000;

Epoch Time(信息出现时间):147702708.633021000秒;

Time delta from previous captured frame(与之前捕获的数据帧时间差):0.000008000秒;

Time delta from previous display frame(与之前数据帧显示时间差):0.000008000秒;

Time since reference or first frame(距离参考帧或第一帧的时间差):2.360139秒;

Frame Number(帧编号):20;

Frame Length(帧长度):66字节(528位);

Capture Length:66字节(528位);

图5 数据传输过程

Source port(源端口):ssh(22);

Destination port(目的端口):56903;

Acknowledgement number(确认号):表示数据收到确认其有效;

Flags:0x010标志位:只有ack=1,有效位;

Checksum(16位校验和):校验和覆盖了整TCP报文段,由发送端计算和存储,并由收端进行验证。

(4)TCP断开连接(四次挥手)

如图6所示,当数据信息发送结束后,主机192节点向63节点发送FIN+ACK包,seq=74546718,ack=29122,FIN+ACK包发送后,并进入FIN_WAIT_1状态;当63节点接受到192节点发送来的FIN后,给出ACK包确认回应,seq=29122,ack=74546718,63节点进入CLOSE_WAIT状态;然后63节点会向192节点发出同样的FIN+ACK包,192节点接收到包后给予确认,然后本次TCP连接结束。

图6 TCP断开连接

三、结束语

Wireshark软件对分析报文详细内容比较方便,简单的查看报文信息可以选择科莱软件。

Hadoop面试中6个常见问题及答案

 

Q1.什么是Hadoop?

Hadoop是一个开源软件框架,用于存储大量数据,并发处理/查询在具有多个商用硬件(即低成本硬件)节点的集群上的那些数据。总之,Hadoop包括以下内容:

HDFS(Hadoop Distributed File System,Hadoop分布式文件系统):HDFS允许你以一种分布式和冗余的方式存储大量数据。例如,1 GB(即1024 MB)文本文件可以拆分为16 * 128MB文件,并存储在Hadoop集群中的8个不同节点上。每个分裂可以复制3次,以实现容错,以便如果1个节点故障的话,也有备份。HDFS适用于顺序的“一次写入、多次读取”的类型访问。

MapReduce:一个计算框架。它以分布式和并行的方式处理大量的数据。当你对所有年龄> 18的用户在上述1 GB文件上执行查询时,将会有“8个映射”函数并行运行,以在其128 MB拆分文件中提取年龄> 18的用户,然后“reduce”函数将运行以将所有单独的输出组合成单个最终结果。

YARN(Yet Another Resource Nagotiator,又一资源定位器):用于作业调度和集群资源管理的框架。

Hadoop生态系统,拥有15多种框架和工具,如Sqoop,Flume,Kafka,Pig,Hive,Spark,Impala等,以便将数据摄入HDFS,在HDFS中转移数据(即变换,丰富,聚合等),并查询来自HDFS的数据用于商业智能和分析。某些工具(如Pig和Hive)是MapReduce上的抽象层,而Spark和Impala等其他工具则是来自MapReduce的改进架构/设计,用于显著提高的延迟以支持近实时(即NRT)和实时处理。

Q2.为什么组织从传统的数据仓库工具转移到基于Hadoop生态系统的智能数据中心?

Hadoop组织正在从以下几个方面提高自己的能力:

现有数据基础设施:

  • 主要使用存储在高端和昂贵硬件中的“structured data,结构化数据”
  • 主要处理为ETL批处理作业,用于将数据提取到RDBMS和数据仓库系统中进行数据挖掘,分析和报告,以进行关键业务决策。
  • 主要处理以千兆字节到兆字节为单位的数据量

基于Hadoop的更智能的数据基础设施,其中

  • 结构化(例如RDBMS),非结构化(例如images,PDF,docs )和半结构化(例如logs,XMLs)的数据可以以可扩展和容错的方式存储在较便宜的商品机器中。
  • 可以通过批处理作业和近实时(即,NRT,200毫秒至2秒)流(例如Flume和Kafka)来摄取数据。
  • 数据可以使用诸如Spark和Impala之类的工具以低延迟(即低于100毫秒)的能力查询。
  • 可以存储以兆兆字节到千兆字节为单位的较大数据量。

这使得组织能够使用更强大的工具来做出更好的业务决策,这些更强大的工具用于获取数据,转移存储的数据(例如聚合,丰富,变换等),以及使用低延迟的报告功能和商业智能。

Q3.更智能&更大的数据中心架构与传统的数据仓库架构有何不同?

传统的企业数据仓库架构

基于Hadoop的数据中心架构

Q4.基于Hadoop的数据中心的好处是什么?

随着数据量和复杂性的增加,提高了整体SLA(即服务水平协议)。例如,“Shared Nothing”架构,并行处理,内存密集型处理框架,如Spark和Impala,以及YARN容量调度程序中的资源抢占。

缩放数据仓库可能会很昂贵。添加额外的高端硬件容量以及获取数据仓库工具的许可证可能会显著增加成本。基于Hadoop的解决方案不仅在商品硬件节点和开源工具方面更便宜,而且还可以通过将数据转换卸载到Hadoop工具(如Spark和Impala)来补足数据仓库解决方案,从而更高效地并行处理大数据。这也将释放数据仓库资源。

探索新的渠道和线索。Hadoop可以为数据科学家提供探索性的沙盒,以从社交媒体,日志文件,电子邮件等地方发现潜在的有价值的数据,这些数据通常在数据仓库中不可得。

更好的灵活性。通常业务需求的改变,也需要对架构和报告进行更改。基于Hadoop的解决方案不仅可以灵活地处理不断发展的模式,还可以处理来自不同来源,如社交媒体,应用程序日志文件,image,PDF和文档文件的半结构化和非结构化数据。

Q5.大数据解决方案的关键步骤是什么?

提取数据,存储数据(即数据建模)和处理数据(即数据加工,数据转换和查询数据)。

提取数据

从各种来源提取数据,例如:

  1. RDBM(Relational Database Management Systems)关系数据库管理系统,如Oracle,MySQL等。
  2. ERPs(Enterprise Resource Planning)企业资源规划(即ERP)系统,如SAP。
  3. CRM(Customer Relationships Management)客户关系管理系统,如Siebel,Salesforce等
  4. 社交媒体Feed和日志文件。
  5. 平面文件,文档和图像。

并将其存储在基于“Hadoop分布式文件系统”(简称HDFS)的数据中心上。可以通过批处理作业(例如每15分钟运行一次,每晚一次,等),近实时(即100毫秒至2分钟)流式传输和实时流式传输(即100毫秒以下)去采集数据。

Hadoop中使用的一个常用术语是“Schema-On-Read”。这意味着未处理(也称为原始)的数据可以被加载到HDFS,其具有基于处理应用的需求在处理之时应用的结构。这与“Schema-On-Write”不同,后者用于需要在加载数据之前在RDBM中定义模式。

存储数据

数据可以存储在HDFS或NoSQL数据库,如HBase。HDFS针对顺序访问和“一次写入和多次读取”的使用模式进行了优化。HDFS具有很高的读写速率,因为它可以将I / O并行到多个驱动器。HBase在HDFS之上,并以柱状方式将数据存储为键/值对。列作为列家族在一起。HBase适合随机读/写访问。在Hadoop中存储数据之前,你需要考虑以下几点:

  1. 数据存储格式:有许多可以应用的文件格式(例如CSV,JSON,序列,AVRO,Parquet等)和数据压缩算法(例如snappy,LZO,gzip,bzip2等)。每个都有特殊的优势。像LZO和bzip2的压缩算法是可拆分的。
  2. 数据建模:尽管Hadoop的无模式性质,模式设计依然是一个重要的考虑方面。这包括存储在HBase,Hive和Impala中的对象的目录结构和模式。Hadoop通常用作整个组织的数据中心,并且数据旨在共享。因此,结构化和有组织的数据存储很重要。
  3. 元数据管理:与存储数据相关的元数据。
  4. 多用户:更智能的数据中心托管多个用户、组和应用程序。这往往导致与统治、标准化和管理相关的挑战。

处理数据

Hadoop的处理框架使用HDFS。它使用“Shared Nothing”架构,在分布式系统中,每个节点完全独立于系统中的其他节点。没有共享资源,如CPU,内存以及会成为瓶颈的磁盘存储。Hadoop的处理框架(如Spark,Pig,Hive,Impala等)处理数据的不同子集,并且不需要管理对共享数据的访问。 “Shared Nothing”架构是非常可扩展的,因为更多的节点可以被添加而没有更进一步的争用和容错,因为每个节点是独立的,并且没有单点故障,系统可以从单个节点的故障快速恢复。

Q6.你会如何选择不同的文件格式存储和处理数据?

设计决策的关键之一是基于以下方面关注文件格式:

  1. 使用模式,例如访问50列中的5列,而不是访问大多数列。
  2. 可并行处理的可分裂性。
  3. 块压缩节省存储空间vs读/写/传输性能
  4. 模式演化以添加字段,修改字段和重命名字段。

CSV文件

CSV文件通常用于在Hadoop和外部系统之间交换数据。CSV是可读和可解析的。 CSV可以方便地用于从数据库到Hadoop或到分析数据库的批量加载。在Hadoop中使用CSV文件时,不包括页眉或页脚行。文件的每一行都应包含记录。CSV文件对模式评估的支持是有限的,因为新字段只能附加到记录的结尾,并且现有字段不能受到限制。CSV文件不支持块压缩,因此压缩CSV文件会有明显的读取性能成本。

JSON文件

JSON记录与JSON文件不同;每一行都是其JSON记录。由于JSON将模式和数据一起存储在每个记录中,因此它能够实现完整的模式演进和可拆分性。此外,JSON文件不支持块级压缩。

序列文件

序列文件以与CSV文件类似的结构用二进制格式存储数据。像CSV一样,序列文件不存储元数据,因此只有模式进化才将新字段附加到记录的末尾。与CSV文件不同,序列文件确实支持块压缩。序列文件也是可拆分的。序列文件可以用于解决“小文件问题”,方式是通过组合较小的通过存储文件名作为键和文件内容作为值的XML文件。由于读取序列文件的复杂性,它们更适合用于在飞行中的(即中间的)数据存储。

注意:序列文件是以Java为中心的,不能跨平台使用。

Avro文件

适合于有模式的长期存储。Avro文件存储具有数据的元数据,但也允许指定用于读取文件的独立模式。启用完全的模式进化支持,允许你通过定义新的独立模式重命名、添加和删除字段以及更改字段的数据类型。Avro文件以JSON格式定义模式,数据将采用二进制JSON格式。Avro文件也是可拆分的,并支持块压缩。更适合需要行级访问的使用模式。这意味着查询该行中的所有列。不适用于行有50+列,但使用模式只需要访问10个或更少的列。Parquet文件格式更适合这个列访问使用模式。

Columnar格式,例如RCFile,ORC

RDBM以面向行的方式存储记录,因为这对于需要在获取许多列的记录的情况下是高效的。如果在向磁盘写入记录时已知所有列值,则面向行的写也是有效的。但是这种方法不能有效地获取行中的仅10%的列或者在写入时所有列值都不知道的情况。这是Columnar文件更有意义的地方。所以Columnar格式在以下情况下工作良好

  • 在不属于查询的列上跳过I / O和解压缩
  • 用于仅访问列的一小部分的查询。
  • 用于数据仓库型应用程序,其中用户想要在大量记录上聚合某些列。

RC和ORC格式是专门用Hive写的而不是通用作为Parquet。

Parquet文件

Parquet文件是一个columnar文件,如RC和ORC。Parquet文件支持块压缩并针对查询性能进行了优化,可以从50多个列记录中选择10个或更少的列。Parquet文件写入性能比非columnar文件格式慢。Parquet通过允许在最后添加新列,还支持有限的模式演变。Parquet可以使用Avro API和Avro架构进行读写。

所以,总而言之,相对于其他,你应该会更喜欢序列,Avro和Parquet文件格式;序列文件用于原始和中间存储,Avro和Parquet文件用于处理。


本文来自转载

译文链接:http://www.codeceo.com/article/6-questions-hadoop-interview.html

英文原文:6 Frequently Asked Hadoop Interview Questions and Answers

翻译作者:码农网 – 小峰