!!! xxxx大学流水线式教学方式以及奔溃的教育体系;
三、简要回答“课堂考核”内容
-
Hadoop安装有哪些模式?本实验是哪种模式?可不可以安装其他模式?
○ 单节点模式(Standalone Mode)和伪分布式模式(Pseudo-Distributed Mode)单点模式是所有的hadoop集群都在一台机器运行,伪分布式是不同组件在不同机器中运行,但这些机器任然属于同一个集群。
○ 本实验使用的伪分布式模式。
○ 本实验具体使用了第二种
○ 当然,您可以安装其他的 Hadoop 模式,如全分布式模式(Fully-Distributed Mode),它是最常见的 Hadoop 部署模式,也是最适合用于生产环境的模式。在全分布式模式下,每个节点都运行不同的 Hadoop 组件,这样可以将大规模数据分布在整个集群中,实现高效的数据处理和存储。如果您想要安装其他的 Hadoop 模式,建议查看官方文档或者其他相关资源,以获取更多的信息和指导。 -
为什么要安装JDK?下载源是哪里?是哪个版本?其他版本可以吗?安装在哪里?
○ 因为hp使用的java语言编写,而java应用程序又需要JRE才能运行,然后JDK又包含了JRE,故需要安装。
○ 下载源清华镜像网
○ 使用8.0版本
○ 其他版本也可以,但是你升任你升,我还用我的Java8
○ 安装usr/java8目录 -
Hadoop的下载源是哪里?是哪个版本?其他版本可以吗?安装在哪里?
○ https://archive.apache.org/dist/hadoop/common/
○ 2.60
○ 可以的
○ opt/目录下 -
在Linux安装JDK和Hadoop与在Windows安装有什么区别?
○ 步骤基本相同,但是在以下可能有区别
○ 文件下载方式,linux中可以命令wget、yum进行安装下载
○ 环境变量设置,win下只需要点点点,linux下需要编写环境变量配置文件
○ 文件权限: 在linux中需要为hadoop设置正确的目录和文件设置,才能保证正常运行 -
JDK和Hadoop的环境变量配置是干什么的?分别是哪个文件?配置完了为什么要source?
○ 是为了让系统知道他们的安装路径
○ 对于jdk而言,配置是为了能使用java、javac,javaw,jps等命令。可以通过修改~/.bashrc文件
○ 对于hadoop而言,环境变量配置主要为了在终端中使用命令, Hadoop环境变量配置的主要有两个:HADOOP_HOME和PATH。HADOOP_HOME用来指定Hadoop的安装路径,
○ source命令使配置立即生效可以避免需要重新启动终端或者重新登录系统才能生效的问题。 -
Hadoop伪分布式要配置哪些文件?作用分别是什么?
○ core-site.xml: 核心配置文件, 在伪分布式模式中,需要将fs.defaultFS属性设置为hdfs://localhost:9000,以便Hadoop可以找到本地的HDFS。
○ hdfs-site.xml:这个文件用来配置Hadoop分布式文件系统(HDFS)的配置。在伪分布式模式中,需要设置dfs.replication属性为1,以便Hadoop只在本地节点上进行数据复制。
○ yarn-site.xml:这个文件用来配置Hadoop YARN资源管理器的配置。在伪分布式模式中,需要将yarn.nodemanager.aux-services属性设置为mapreduce_shuffle,以便Hadoop可以在本地节点上启动YARN节点管理器。 -
免密登录是什么意思?为什么要配置免密登录?
○ 用户可以在不输入密码就能访问服务节点。
○ 因为配置免密码登录就可以直接访问hadoop节点之间的信任关系啦。 -
启动Hadoop后能够看到哪些节点?它们分别是干什么的?
○ 可以使用hadoop dfsadmin -report来查看节点
○ NameNode:NameNode是HDFS的主节点,用于存储所有HDFS元数据。它负责管理整个文件系统的命名空间,以及监控数据块的复制状态。
○ Secondary NameNode:Secondary NameNode是NameNode的备份节点。它会定期地合并HDFS的编辑日志,以便在NameNode崩溃时可以更快地恢复HDFS。
○ DataNode:DataNode是HDFS的数据节点,用于存储实际的数据块。它们通常运行在集群中的各个节点上,可以通过网络连接来访问数据。
○ ResourceManager:ResourceManager是YARN的主节点,用于管理整个集群的资源。它负责为各个应用程序分配资源,并监控其运行状态。
○ NodeManager:NodeManager是YARN的数据节点,用于在各个节点上运行应用程序的任务。它们通常运行在集群中的各个节点上,可以通过网络连接来访问资源。
○ Hadoop的两个Web页面分别是干什么的? -
实验桌面文件系统与ECS文件系统区别是什么?浏览器下载文件是下载到哪个文件系统里?文件在两者之间怎么传输?
○ 实验桌面系统文件是阿里云提供的云计算实验环境中文件系统,存储在实验环境的本地硬盘当中
○ ecs文件是ecs中使用的文件系统,存储在ecs实例所连接的云盘当中。 -
HDFS文件系统与本地文件系统区别是什么?
○ 存储在多太计算机硬盘当中,而本地文件系统存放在单台计算机硬盘当中。
○ 文件大小: hdfs文件系统可以把问就按数据库分成多块进行存储,因此它可以处理超级大的文件,而本地受限于石激起的存储空间,无法处理大文件。
○ 冗余备份: hdfs会在多个计算机系统当中进行数据冗余备份,而本地文件系统一般不具备这种功能。
○ 访问方式: hdfs文件系统支持多用户访问且可以远程访问。
○ hdfs高吞吐,高容错,可以扩展 -
Hadoop命令与Linux命令区别是什么?
○ 参数不同
○ 文件结构不同
○ 功能不同
○ 命令不同 -
HDFS上怎么创建文件和文件夹?怎么查看?
○ hdfs dfs -mkdir
○ hdfs dfs -touchz
○ hdfs dfs -ls -
怎么从HDFS上下载文件到本地?命令是什么?简单讲述原理是什么?关键的Java输入输出流及方法是什么?
○ hdfs dfs -get
○ 这个命令使用Hadoop分布式文件系统(HDFS)提供的API来将文件从HDFS复制到本地文件系统。当运行该命令时,Hadoop集群会将文件划分成多个数据块,并将这些数据块分布在多个数据节点上。然后,Hadoop会使用Java输入输出流(java.io包)将文件的数据块从数据节点复制到本地文件系统中。
○ FSDataInputStream类:用于读取HDFS文件中的数据。
○ FileOutputStream类:用于将数据写入本地文件系统中的文件。
○ read(byte[] b)方法:用于读取指定字节数组中的数据。
○ write(byte[] b)方法:用于将指定字节数组中的数据写入文件中。 -
怎么把本地文件上传到HDFS上?命令是什么?简单讲述原理是什么?关键的Java输入输出流及函数是什么?
○ 要将本地文件上传到HDFS上,可以使用hdfs dfs -put命令。该命令会将本地文件复制到HDFS上的指定目录中
○ 原理是将本地文件读入到内存中,然后通过Hadoop的Java API将数据写入到HDFS的分布式文件系统中。在这个过程中,使用了Java输入输出流来实现文件读写。
○ 在Java中,可以使用FileInputStream类来读取本地文件,将其包装为一个BufferedInputStream,然后使用FileSystem类和FSDataOutputStream类将数据写入到HDFS中。其中,FileSystem类是Hadoop中文件系统的抽象基类,用于操作HDFS中的文件和目录,而FSDataOutputStream类则是用于写入数据到HDFS中的输出流。
○ -
实验《HDFS写文件》中,Python写入HDFS用的哪个函数?写入到哪里了?
○ -
实验《HDFS读文件》中,Python创建HDFS输入流的函数是什么?从HDFS读取的文件内容输出到哪里了?
○
四、习题
2.5 习题
-
试述Hadoop和谷歌的 MapReduce、GFS 等技术之间的关系。 (参考:https://blog.csdn.net/leftfist/article/details/104168141/)
○ Hadoop和谷歌的MapReduce、GFS等技术之间有密切的关系,因为Hadoop是从Google的MapReduce和GFS技术中获得灵感而开发出来的开源分布式计算框架。
-
试述Hadoop具有哪些特性。
○ 可靠性
○ 可扩展性
○ 高效性
○ 灵活性
○ 成本效益 -
试述Hadoop在各个领域的应用情况。
○ 金融领域: 风险评估,数据清洗
○ 医疗领域: 病例,影像,实验室数据
○ 零售和电商: 零售电商领域
○ 互联网和社交媒体: 分析用户行为,优化搜索算法
○ 能源和环境: 环境监测… -
试述Hadoop生态系统以及每个部分的具体功能。
○ HDFS:是一种分布式文件系统,它能够将大型文件分割成小块并存储在多个节点上
○ YARN,是2.x版本中资源管理器,负责为分布式应用程序分配管理程序,主要是提高资源利用率和多样化计算框架支持。
○ MapReduce: 是一种基于hadoop的数据仓库系统,支持将大规模数据映射到多个节点上,最后将结果合并成为最终输出。
○ apache hive,是一种基于数据仓库系统,它提供了类SQL的查询数据分析功能,Hive的主要功能是将结构化数据映射到hadoop上,惊醒查询分析
○ Apache Pig: 提供了基于主流语言,主要使得数据处理更加灵活可扩展
○ Apache Hbase: 基于Hadoop的分布式数据库,支持告诉读写大规模数据存储, HBase的主要功能是为随机读写和在线查询提供高性能的分布式数据库服务。
○ Apache spark: 基于内存计算模型
○ Apache Storm: 是一种用于实时流数据处理的分布式计算系统,它支持低延迟的数据流处理和高吞吐量的消息传递。Storm的主要功能是提供实时流数据处理的支持,如实时计算、实时分析等。
○ -
配置Hadoop时,Java的路径JAVAHOME在哪一个配置文件中进行设置的?
○ 需要配置在etc/hadoop/hadoop-env.sh和core-site.xml -
所有HDFS路径是通过fs.default.name 来设置的,请问它是在哪个配置文件中设置的?
○ hdfs默认文件系统URI -
试列举单机模式和伪分布模式的异同点。
○ 伪分布式是将n个组件分布在不同服务器当中
○ 单机模式将全部组件放入一个服务器当中 -
Hadoop伪分布式运行启动后所具有的进程都有哪些?
○ nameNode
○ dataNode
○ Secondary NameNode
○ jobTracker
○ TaskTracker -
如果具备集群实验条件,请尝试按照Hadoop官方文档搭建全分布式的Hadoop集群环境。
○ 配置无密码环境
○ 配置ssh无密码登录
○ 安装java环境
○ 配置hp环境变量
○ 配置hp集群节点主机名
○ 配置hp核心文件core-sizte.xml
○ 配置mapred-site.xml
○ 配置YARN文件
○ 配置集群管理文件slaves
○ 格式化hdfs文件系统
○ 启动hp各项服务
○ 测试是否运行是否正常
3.9 习题
- 试述分布式文件系统设计的需求。
● 分布式文件系统设计的需求包括高可用性、可靠性、可扩展性和高性能。由于文件数据量巨大,单一文件服务器容易成为系统瓶颈,而分布式文件系统可以将数据分散到多个节点上,提高系统的并发性和容错性。同时,分布式文件系统需要支持多种文件操作,如文件的读、写、复制、移动和删除等,这些操作需要在整个系统中实现同步和一致性。 - 分布式文件系统是如何实现较高水平扩展的?
○ 分布式文件系统实现较高水平扩展的方法是采用横向扩展的方式,即通过增加节点数量来增加系统的处理能力和存储能力。同时,分布式文件系统还需要采用数据分片和数据副本等技术,将数据分散到多个节点上,提高数据的可用性和可靠性。 - 试述HDFS中的块和普通文件系统中的块的区别。
○ hdfs中块大小通常128MB和256MB,而普通文件的快大小通常是4k或者8k
○ hdfs块数量根据文件大小自动计算的,而普通文件块大小由文件系统块大小确定的 - 试述HDFS中的名称节点和数据节点的具体功能。
○ HDFS中的名称节点负责管理文件系统的命名空间,包括文件和目录的创建、删除和重命名等操作。数据节点负责存储数据块和处理客户端请求。当客户端需要读写文件时,先向名称节点发送请求,名称节点返回文件的数据块信息,客户端再直接与数据节点通信进行读写操作。 - 在分布式文件系统中,中心节点的设计至关重要,请阐述HDFS如何减中心节点的负担的。
○ HDFS减轻中心节点的负担的方法主要包括将名称节点的元数据存储在内存中,并通过定期将元数据刷新到磁盘上来提高读写性能。此外,HDFS还采用了块报告机制和心跳机制,使数据节点能够及时向名称节点报告数据块的状态和可用性,减少名称节点的负担。 - HDFS只设置唯一一个名称节点,在简化系统设计的同时也带来了一些明显的局限性,请阐述局限性具体表现在哪些方面。
○ HDFS只设置唯一一个名称节点的局限性表现在多个方面。首先,名称节点成为系统的单点故障,一旦名称节点出现故障,整个系统将无法正常工作。其次,名称节点需要负责管理整个文件系统的命名空间和元数据,当文件系统变得非常庞大时,名称节点的处理能力和存储能力将成为系统的瓶颈。 - 试述HDFS的冗余数据保存策略。
○ HDFS的冗余数据保存策略是通过数据复制来实现的。每个数据块会被复制到多个数据节点上,这些复制称为副本。HDFS中默认的副本数是3个,这个数量可以在配置文件中进行设置。当一个数据节点失效时,它上面的数据块副本可以被其他数据节点上的副本所取代,从而保证数据的可用性和可靠性。 - 数据复制要在数据写入和数据恢复的时候发生,HDFS数据复制使用流水线复制的策略,请阐述该策略的细节。
○ HDFS数据复制采用流水线复制策略,该策略包括3个阶段:数据复制、数据传输和数据确认。在数据复制阶段,名称节点会选择多个数据节点来保存数据块的副本,选择的数据节点数目等于所配置的副本数。在数据传输阶段,数据块的副本会被依次传输到所选择的数据节点上,每个数据节点接收到数据后会立即将数据传输到下一个数据节点上。在数据确认阶段,每个数据节点会将已经接收到的数据块确认给名称节点。当名称节点接收到所选择的数据节点的全部确认信息时,数据复制过程就结束了。 - 试述HDFS是如何探测错误发生以及如何进行恢复的。
○ HDFS探测错误发生主要是通过心跳机制和块报告机制来实现的。每个数据节点会定期向名称节点发送心跳信息,用于汇报自身的状态信息和健康状况。如果名称节点在一定时间内没有收到某个数据节点的心跳信息,就会将该数据节点标记为失效状态,并将其上的数据块副本复制到其他数据节点上。此外,名称节点还会定期向数据节点发送块报告信息,用于了解数据块的状态和位置信息,以便及时处理数据块的故障和维护数据的一致性。 - 请阐述HDFS在不发生故障的情况下读文件的过程。
○ 在不发生故障的情况下,HDFS读文件的过程如下:首先,客户端向名称节点发送读文件请求,名称节点返回所请求文件的块位置信息和副本位置信息。然后,客户端直接与数据节点通信,获取所需的数据块。如果客户端读取的数据块与名称节点返回的副本位置信息不一致,客户端会尝试从其他副本中读取数据块,直到读取到正确的数据块为止。 - 请阐述HDFS在不发生故障的情况下写文件的过程。
○ 在不发生故障的情况下,HDFS写文件的过程如下:首先,客户端向名称节点发送写文件请求,名称节点返回一组数据节点列表,客户端向这些数据节点按顺序写入数据块。客户端会首先向第一个数据节点写入一个完整的数据块,然后将该数据块的副本传输到下一个数据节点,以此类推。当所有的数据块都写入成功后,客户端向名称节点发送关闭文件
8.6 习题 - 试述在Hadoop 推出之后其优化与发展主要体现在哪两个方面。
○ 改进了hdfs的可靠性和性能,使其能够支持更大的数据集和更高的并发访问
○ 发展了YARN支持更多中类型的计算 - 试述HDFS1.0中只包含一个名称节点会带来哪些问题。、
○ 单点故障: 如果名称节点发生故障,整个hdfs将不可用
○ 限制性能: 单个名称节点负责管理整个文件系统的命名空间和元数据,当文件系统越来越大,名称节点的负载也会增加,导致性能下降 - 请描述HDFS的HA架构组成组件及其具体功能。
○ Active NameNode:在HDFS集群中的一个名称节点,负责管理文件系统的命名空间和元数据,接收客户端的读写请求,并将这些请求转发给数据节点。
○ Standby NameNode:在HDFS集群中的一个备份名称节点,监控Active NameNode的状态,并在其发生故障时接管其职责,成为新的Active NameNode。
○ JournalNodes:存储文件系统的修改日志,用于在Active和Standby NameNode之间进行状态同步。
○ ZooKeeper:提供服务发现和状态同步机制,用于管理Active和Standby NameNode之间的切换和故障恢复。 - 请分析HDFS的HA架构中数据节点如何和名称节点保持通信。
○ 数据节点如何与名称节点保持通信取决于HDFS的通信协议。在HDFS的HA架构中,数据节点会直接向Active NameNode发送心跳信息,并定期报告其状态和可用容量。Active NameNode将根据这些信息来维护文件系统的状态,并将客户端的读写请求转发给相应的数据节点。 - 请阐述为什么需要HDFS联邦,即它能够解决什么问题。
○ HDFS联邦的目的是提供一种机制,使得多个独立的HDFS集群能够共同工作,从而解决以下问题:
○ 扩展性:单个HDFS集群可能无法容纳足够大的数据集。
○ 故障隔离:单个HDFS集群中的故障可能会影响整个文件系统。
○ 灵活性:不同的业务可能需要不同的文件系统配置和管理策略。 - 请描述HDFS联邦中“块池”的概念,并分析为什么HDFS联邦中的一个名称节点失效,也不会影响到与它相关的数据节点继续为其他名称节点提供服务。
○ HDFS联邦中的“块池”是指多个独立的HDFS集群中共享的块存储池。在一个联邦中,每个HDFS集群都有自己的名称节点和数据节点,但它们共享一个块池。这意味着不同的HDFS集群可以访问同一个块池中的数据块,从而实现了数据的共享和协作。当一个名称节点失效时,其他名称节点可以继续访问块池中的数据,因此不会影响到与它相关的数据节点继续为其他名称节点提供服务。 - 请阐述MapReduce1.0体系结构中存在的问题。
○ MapReduce1.0体系结构中存在的主要问题是,它只能处理批量作业,不能很好地支持实时数据处理。此外,MapReduce1.0还存在一些性能瓶颈,如任务调度和数据传输。 - 请描述YARN架构中各组件的功能。
○ ResourceManager:负责整个集群资源的管理和分配。
○ NodeManager:负责单个节点的资源管理和任务调度。
○ ApplicationMaster:负责管理和协调特定应用程序的执行。
○ Container:是一个虚拟化的资源分配单位,封装了CPU、内存、网络和磁盘等资源,由NodeManager在物理节点上创建和销毁。 - 请描述在YARN框架中执行一个MapReduce程序时,从提交到完成需要经历的具体步骤。
○ 第一步:客户端向ResourceManager提交作业,ResourceManager为该作业分配ApplicationMaster。
○ 第二步:ApplicationMaster向ResourceManager申请资源,ResourceManager为其分配Container。
○ 第三步:Container中启动Map任务,读取HDFS中的数据并将结果写入本地磁盘。
○ 第四步:Container中启动Reduce任务,读取Map任务的结果并将最终结果写入HDFS。
○ 第五步:任务完成后,ApplicationMaster向ResourceManager注销,释放资源。 - 请对YARN和MapReduce1.0框架进行优劣势对比分析。
○ YARN相对于MapReduce1.0更加复杂,需要更高的学习成本。
○ YARN对资源的管理和调度需要更多的资源开销。
○ YARN的性能受到各种因素的影响,如容器的启动时间和网络传输等。 - 请分别描述Pig Tez和Kafka的功能。
○ Pig是一个基于Hadoop的大数据处理平台,它提供了一种高级语言Pig Latin来操作和管理分布式数据集。Pig的主要功能包括数据提取、转换、加载、清理和建模。Pig的数据流语言可以方便地对大规模数据进行分析和处理,并且可以与其他Hadoop生态系统中的工具进行集成,如Hive和HBase等。
○ Tez是一个基于Hadoop的高性能数据处理框架,它可以加速Hadoop生态系统中的数据处理任务。与传统的MapReduce相比,Tez具有更高的性能和更低的延迟,可以处理更复杂的数据流处理任务,如图形处理和迭代算法等。Tez还支持动态优化,可以根据数据特征和集群负载情况对任务进行优化。
○ Kafka是一个分布式的流处理平台,主要用于大规模、实时的数据处理。它可以处理实时的数据流,并将数据流传输到不同的系统和应用程序中。Kafka的主要功能包括高性能的消息传输、消息缓冲、消息存储和流处理等。Kafka可以与Hadoop和Spark等其他大数据技术集成,提供了一种可扩展、高可靠性、高吞吐量和低延迟的数据流处理解决方案。