课外作业二:搭建Hadoop环境及HDFS
- 作业详情
内容
- 阿里云-云起实验室-《搭建Hadoop环境》-Hadoop-2.10.1伪分布式:
1.截图本实验ECS的公网IP地址,并添加彩色框标注,如下图所示: 2.步骤6.启动Hadoop成功之后,截图并添加彩色框标注,如下图所示
3.hdfs根目录创建文件夹(文件夹命名为:自己姓名全拼接学号后四位) 4.在该文件夹下面创建文件(文件命名为:自己姓名全拼接学号后四位.txt) 5.上传ECS的root目录下的Hadoop安装文件到hdfs自建的文件夹下面 6.操作成功后截图并添加彩色框标注,如下图所示:
- 华为云-Koolabs云实验-实验《HDFS写文件》 将下载的实验数据文件000000_0改名为自己姓名全拼接学号后四位 , 实验最后运行python程序后,截图查看文件内容命令及显示结果。
- 实验《HDFS读文件》:实验最后一步的txt文件check02改为自己姓名全拼接学号后四位,运行python程序后,截图执行结果。
- 简要回答“课堂考核”内容
- Hadoop安装有哪些模式?本实验是哪种模式?可不可以安装其他模式?
答:Hadoop安装有4种模式:单节点模式、伪分布式模式、完全分布式模式以及高可用模式。
- 为什么要安装JDK?下载源是哪里?是哪个版本?其他版本可以吗?安装在哪里?
答:在安装Hadoop之前,需要先安装JDK,因为Hadoop是基于Java开发的,JDK提供了编译环境,而且Hadoop的运行需要依赖JDK的环境。
- Hadoop的下载源是哪里?是哪个版本?其他版本可以吗?安装在哪里?
答:Hadoop的下载源是Apache官网,最新的版本是Hadoop 2.7,其它版本也可以,但是建议使用最新的版本。Hadoop安装在一个正确安装、配置网络和用户环境的机器上,可以是物理机或虚拟机。
- 在Linux安装JDK和Hadoop与在Windows安装有什么区别?
答:Linux下安装JDK和Hadoop与在Windows安装是差不多的,只不过Windows下是GUI界面,而Linux下是命令行界面。
- JDK和Hadoop的环境变量配置是干什么的?分别是哪个文件?配置完了为什么要source?
答:JDK和Hadoop的环境变量配置要在.bashrc文件中进行,其中JDK需要配置JAVA_HOME,Hadoop需要配置HADOOP_HOME、HADOOP_PREFIX等,这些环境变量的配置可以让用户从任何目录调用Hadoop的命令,并且可以执行程序。source是用来使新配置的环境变量生效的,它会启动一个新的shell,在新的shell中,环境变量会使用新配置。
- Hadoop伪分布式要配置哪些文件?作用分别是什么?
答:Hadoop伪分布式要配置以下3个文件:core-site.xml、hdfs-site.xml和mapred-site.xml。core-site.xml主要用于配置Hadoop的全局属性,比如Hadoop-specific configurations;hdfs-site.xml主要用于配置HDFS的选项,如HDFS的Namespace以及存储块的大小;mapred-site.xml主要用于配置MapReduce的选项,像是JobTracker的端口号或MapReduce程序的相关路径等。
- 免密登录是什么意思?为什么要配置免密登录?
答:免密登录是指可以在不输入用户名和口令的情况下登录到远程的Linux系统,从而提高SSH远程登录的安全性和便利性。为了配置免密登录,需要分别在客户机和服务器上安装ssh-keygen,并分别在两台机器上生成公钥和私钥,然后对公钥进行复制,就可以实现免密登录了。
- 启动Hadoop后能够看到哪些节点?它们分别是干什么的?
答:启动Hadoop后可以看到NameNode节点、DataNode节点以及SecondaryNameNode节点。NameNode是HDFS的管理节点,用于记录文件系统的元数据信息;DataNode节点是存储数据的节点,它们存储用户上传的数据;SecondaryNameNode节点负责NameNode的备份工作,它是一种辅助节点,用于保存NameNode站点的内存映像副本,从而获得更好的容错性。
- Hadoop的两个Web页面分别是干什么的?
答:Hadoop有两个Web页面,分别是NameNode Web UI和JobTracker Web UI。NameNode Web UI用于查看文件系统、查看集群中的节点,以及管理存储在文件系统中的数据;而JobTracker Web UI则用于查看任务的状态和信息,便于监控任务的执行情况。
- 实验桌面文件系统与ECS文件系统区别是什么?浏览器下载文件是下载到哪个文件系统里?文件在两者之间怎么传输?
答:实验桌面文件系统与ECS文件系统区别是,实验桌面文件系统指的是实验桌面环境中本地的文件系统,它存储在本地的硬盘上;而ECS文件系统指的是EMR实例中的文件系统,由Hadoop分布式文件系统HDFS所管理,它存储在实例上的硬盘中。浏览器下载文件是下载到实验桌面文件系统里。文件在两者之间可以通过FTP文件传输协议或者SCP安全文件传输协议实现传输。
- HDFS文件系统与本地文件系统区别是什么?
答:HDFS文件系统与本地文件系统的区别在于,HDFS是一个分布式文件系统,可以支持大量容量、高吞吐量和可靠性,而本地文件系统则更像是一种单机文件系统,存储容量和吞吐量都要低于HDFS。
- Hadoop命令与Linux命令区别是什么?
答:Hadoop命令与Linux命令相比较,Hadoop命令更广泛,可以进行更多的操作;而Linux命令则只能做基础的操作,比如查看目录、创建文件、执行一些简单的命令等。
- HDFS上怎么创建文件和文件夹?怎么查看?
答:HDFS上创建文件和文件夹,可以使用hadoop fs -mkdir命令创建文件夹,使用hadoop fs -put命令上传文件到HDFS上;查看文件和文件夹,可以通过hadoop fs -ls命令查看HDFS上的文件和文件夹。
- 怎么从HDFS上下载文件到本地?命令是什么?简单讲述原理是什么?关键的Java输入输出流及方法是什么?
答:从HDFS上下载文件到本地的命令是hadoop fs -get,原理是调用hadoop的java API来获取远程文件系统中的文件。关键的输入输出流及方法是将文件从HDFS上读入到InputStream中,并且将该文件写入到本地的OutputStream中,从而实现文件的下载。
- 怎么把本地文件上传到HDFS上?命令是什么?简单讲述原理是什么?关键的Java输入输出流及函数是什么?
答:将本地文件上传到HDFS上的命令是hadoop fs -put,原理是调用hadoop的java API来将文件上传到远程文件系统中。关键的输入输出流及方法是将文件从本地的InputStream中读入,并且将文件写入到HDFS的OutputStream中,从而实现文件的上传。
- 实验《HDFS写文件》中,Python写入HDFS用的哪个函数?写入到哪里了?
答:实验《HDFS写文件》中,Python写入HDFS用的函数是hdfs3.HDFile,它会将文件写入到HDFS上。
- 实验《HDFS读文件》中,Python创建HDFS输入流的函数是什么?从HDFS读取的文件内容输出到哪里了?
答:实验《HDFS读文件》中,Python创建HDFS输入流的函数是hdfs3.HDFile,从HDFS读取的文件内容会输出到HDFile对象中。
- 习题
- 试述Hadoop和谷歌的 MapReduce、GFS 等技术之间的关系。
答:Hadoop是谷歌的MapReduce和GFS(分布式文件系统)技术的开源实现,Hadoop实现了谷歌分布式存储及计算的架构。
- 试述Hadoop具有哪些特性。
答:Hadoop具有高可扩展性、高容错性、高效容量管理等特点。
- 试述Hadoop在各个领域的应用情况。
答: Hadoop目前在商业、金融、医疗、教育等多个领域都得到了广泛应用,它可以大大减少数据处理时间及成本,节省人力成本,提高企业的数据处理水平,发挥其价值。
- 试述Hadoop生态系统以及每个部分的具体功能。
答: Hadoop生态系统包括HDFS(分布式文件系统)、MapReduce (分布式计算框架)、YARN(集群资源管理器)、Hive(数据仓库)、HBase(NoSQL分布式数据库)、ZooKeeper(协调服务)等,它们的功能分别是:提供高可靠的存储系统,实现计算框架,管理集群资源,提供数据仓库,提供NoSQL分布式数据库,以及协调集群中各节点之间的通信。
- 配置Hadoop时,Java的路径JAVAHOME在哪一个配置文件中进行设置的?
答:java的路径JAVAHOME在hadoop-env.sh配置文件中进行设置。
- 所有HDFS路径是通过fs.default.name 来设置的,请问它是在哪个配置文件中设置的?
答:所有HDFS路径是通过fs.default.name在core-site.xml中进行设置。
- 试列举单机模式和伪分布模式的异同点。
答:单机模式和伪分布模式的异同点: 都是Hadoop计算模型,在它们之中可以使用Hadoop提供的MapReduce计算框架;都可以使用Hadoop提供的分布式存储系统HDFS来存储大量的数据; 不同点: 单机模式只需要一台机器,而伪分布模式需要至少两台机器,且两台机器之间要有足够的网络连接,以确保数据和任务都可以正常地传输; 单机模式下,它将会维护一个HDFS集群、一个MapReduce集群,而伪分布模式下,它将会维护一个HDFS集群和多个MapReduce集群; 单机模式仅支持单机上的MapReduce作业,而伪分布模式支持数据的多机器上的分布式MapReduce作业; 单机模式只能利用单机的资源来处理数据,而伪分布模式可以利用多机的资源来处理数据,从而达到更好的性能。
- Hadoop伪分布式运行启动后所具有的进程都有哪些?
答:Hadoop伪分布式运行启动后所具有的进程有:NameNode进程、SecondaryNameNode进程、DataNode进程、ResourceManager进程、NodeManager进程以及JobHistoryServer进程。
- 如果具备集群实验条件,请尝试按照Hadoop官方文档搭建全分布式的Hadoop集群环境。
- 习题
- 试述分布式文件系统设计的需求。
答:要能够采用不同类型的文件系统,要支持多种类型的文件读写操作,系统要容易扩展和维护,对存储节点的错误要有恢复机制,要支持权限管理,要支持多种网络协议,安全性要有一定的保障,且要支持硬盘和网络文件的传输。
- 分布式文件系统是如何实现较高水平扩展的?
答:采用分布式存储技术,将数据分散存储,分布式文件系统采用多个数据服务器实现水平扩展,同时分散数据到多个数据服务器上,增加服务器的灵活性,提高存储的效率。另外,分布式文件系统还可以通过分布式缓存技术和网络负载均衡技术实现水平扩展。
- 试述HDFS中的块和普通文件系统中的块的区别。
答:HDFS中的块:HDFS的存储块是64M,是HDFS的内部存储单元,所有的文件都需要被细分为一个个64M的存储块,以实现数据的复制和存储。 普通文件系统中的块:块是文件系统最小的读写单元,一般普通的文件系统的存储块的大小小于HDFS的存储块,一般在4KB~8KB之间。
- 试述HDFS中的名称节点和数据节点的具体功能。
答:HDFS中的名称节点是整个集群的核心,它存放所有的文件的元数据,负责管理元数据的更新和查询,也负责文件的访问控制;它还负责数据块的分配和管理,允许节点上载和下载数据,负责数据块的复制和验证,它还负责整个HDFS文件系统的监控管理,可以监控整个HDFS的运行状态。 HDFS的数据节点负责处理客户端的读写请求,并将客户端发来的文件分割成存储块,将每个存储块中的数据保存到本地,还会将这些存储块复制到名称节点指定的若干数据节点,以实现冗余存储。数据节点还负责检查存储在本地的存储块,如果发现有损坏的存储块,就会将其标记为失效,并将它从本地重新复制。
- 在分布式文件系统中,中心节点的设计至关重要,请阐述HDFS如何减中心节点的负担的。
答:HDFS采用了客户端/服务器的模式,它的客户端可以查询名称节点信息,并从名称节点处获取数据节点的信息,从而减轻了中心节点的负担。此外,还有一些方法可以为名称节点减轻负担,如有一个无法访问的故障节点,节点管理器可以从远程异步检查数据节点的状态,这样可以减轻名称节点的负担。
- HDFS只设置唯一一个名称节点,在简化系统设计的同时也带来了一些明显的局限性,请阐述局限性具体表现在哪些方面。
答:首先,因为只有一个名称节点,因此其可用性受到限制,如果名称节点出现故障,整个系统都将无法工作;其次,名称节点存储集群中所有文件的元数据,因此其处理负担很重,随着文件系统的不断增长,名称节点的处理能力可能会受到限制。
- 试述HDFS的冗余数据保存策略。
答:HDFS的冗余数据保存策略是把一个数据块复制到多个数据节点上,默认复制三份,这样一来,即使一个节点出现故障,我们也可以从其他节点上恢复数据,而且这种保存策略能够有效地减少系统的单点故障。
- 数据复制要在数据写入和数据恢复的时候发生,HDFS数据复制使用流水线复制的策略,请阐述该策略的细节。
答:HDFS数据复制使用流水线复制策略,指的是将一份数据(文件)复制到一组已知的DataNode结点上。默认的复制因子是3,即每一份数据会写入3个DataNode结点上。HDFS会顺序地将这一份数据分成多个块,并在DataNode结点上分别写入这些块,并立即开始下个块的写入,直到所有块完成写入。这样可以大大提高数据复制的传输效率,有效利用了网络带宽传输大量数据。
- 试述HDFS是如何探测错误发生以及如何进行恢复的。
答:HDFS会采用Heartbeat机制以及Blockreport机制来探测数据结点上的故障发生,当NameNode收到来自DataNode的Heartbeat信息,说明该DataNode结点上的块没有发生故障;而当NameNode没有收到来自DataNode的Heartbeat信息,NameNode会认为该DataNode发生了故障,然后发出恢复命令来恢复损坏的数据。
- 请阐述HDFS在不发生故障的情况下读文件的过程。
答:首先客户端向NameNode发起数据读取请求,NameNode收到后会返回数据所在的DataNode结点;NameNode建立连接后,客户端会从DataNode上拉取数据块,直到拉取完毕;客户端拉取的数据同时也会校验数据的完整性,如果发现数据不完整,客户端会重新向NameNode请求新的数据块,直到成功拉取完毕有效的数据块,最后将拉取的多个数据块合并成一份文件。
- 请阐述HDFS在不发生故障的情况下写文件的过程。
答:首先客户端向NameNode发起写文件请求,NameNode收到后会响应回复多个可用DataNode结点;NameNode建立连接后,客户端会将文件分块之后对每一块数据进行复制,并在每个DataNode结点上写入,直到所有块完成写入,写入完毕;然后客户端会向NameNode发出确认写入完毕的信号,NameNode会收到后在元数据中记录文件以及文件内容块的位置。
- 习题
- 试述在Hadoop 推出之后其优化与发展主要体现在哪两个方面。
答:Hadoop优化与发展主要体现在以下两个方面:1、架构优化:Hadoop架构的发展过程中,从HDFS原始版本的单点架构向HDFS HA架构发展,多点架构的优势可以有效的缓解名称节点的单点故障;从MapReduce1.0的单点架构向MapReduce2.0和YARN的多点架构发展,多点架构可以有效的减少资源占用,提高系统的可伸缩性、可扩展性。2、系统优化:Hadoop也在不断的优化内部的调度策略,如HDFS、MapReduce、Spark等,实现任务更加快速、高效的执行,使用更少的资源,并且可以扩展到更大的规模。
- 试述HDFS1.0中只包含一个名称节点会带来哪些问题。
答:1、单点故障:只有一个名称节点,一旦发生故障,整个系统可能无法正常运行,甚至会发生数据丢失等问题。2、资源利用率低:由于单点架构,不能有效的利用系统资源,使得整个系统运行效率不高。
- 请描述HDFS的HA架构组成组件及其具体功能。
答:1、NameNode服务:负责数据的存取控制,比如用户对文件的读写控制,以及数据块的存储位置等。2、DataNode服务:负责实际的数据处理和存储,以及心跳报告等。3、JournalNode服务:负责在一个或多台服务器上存储NameNode活跃状态,以及NameNode之间的同步操作。
- 请分析HDFS的HA架构中数据节点如何和名称节点保持通信。
答:HDFS的HA架构中,数据节点与名称节点之间会采用一定的协议进行通信,例如DataNode会通过Heartbeat来确认当前的进程是否存活;名称节点会通过网络传输技术,来上传数据块和元数据信息给数据节点。
- 请阐述为什么需要HDFS联邦,即它能够解决什么问题。
答:HDFS联邦,是一种对HDFS服务的分布式架构,它由多个独立的NameNode和DataNode组成。它能够有效的减少单点故障的风险,同时为用户提供更多的可用空间,提升系统可扩展性和可伸缩性,满足用户的需求。
- 请描述HDFS联邦中“块池”的概念,并分析为什么HDFS联邦中的一个名称节点失效,也不会影响到与它相关的数据节点继续为其他名称节点提供服务。
答:HDFS联邦中的“块池”,是指每个数据节点所能够存储的最大的数据块数量,它的功能是为了更好的管理数据块的存储空间,可以根据块池大小,为不同的DataNode分配不同的数据块存储空间,当某个NameNode失效时,它所相关的DataNode也可以继续为其他NameNode提供服务,使得整个系统更加高可用性。
- 请阐述MapReduce1.0体系结构中存在的问题。
答:1、资源利用率低:MapReduce1.0没有多余资源可利用,因此资源利用率不高,耗时也更长;2、规模受限:单点架构受限,MapReduce1.0架构受限,无法扩展继续受限;3、垃圾回收机制不友好:MapReduce1.0没有良好的垃圾回收机制,导致资源浪费,系统崩溃等问题。
- 请描述YARN架构中各组件的功能。
答:1. ResourceManager:负责管理集群资源,调度应用程序,实时更新状态。2. NodeManager:负责管理和监控节点资源,包括内存,磁盘,网络。3. ApplicationMaster:负责管理节点的资源分配和调度,提供资源管理的抽象层
- 请描述在YARN框架中执行一个MapReduce程序时,从提交到完成需要经历的具体步骤。
答:1. 用户提交MapReduce程序到ResourceManager。2. ResourceManager将作业分配给ApplicationMaster。3. ApplicationMaster拉取程序的Jar包,根据作业拆分成多份子任务。4. ApplicationMaster向NodeManager发起请求,申请资源。5. NodeManager拉取程序Jar,并启动任务。6. 每个任务完成后,ApplicationMaster通知ResourceManager,该作业完成
- 请对YARN和MapReduce1.0框架进行优劣势对比分析。
答:优势: 1、 YARN拥有更大的横向可伸缩性,可以支持更多节点的运行,处理更多的作业。 2、YARN的资源管理更加灵活,能够更好地利用系统资源。 3、 YARN可以支持更多的编程模型,如Tez,Spark,Kafka等。 劣势: 1、 YARN框架在资源分配和调度上,比MapReduce1.0框架要复杂一些。 2、 YARN框架的运行效率和性能,要低于MapReduce1.0框架。
- 请分别描述Pig Tez和Kafka的功能。 答: 1、Pig Tez:Pig Tez是一种用于加速Pig数据处理的机制,它能够利用Apache Tez的架构构建一种任务图,可以把多个作业组合到一起,用于把一些轻量作业链接起来; 2、Kafka:Kafka是一种分布式发布订阅的消息系统,它通过维护一个大容量的集群,能够支持百万级的消息订阅,支持高吞吐量和低延迟,能够用于大规模的数据收集、聚合和处理;