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