Hadoop学习笔记

合集下载

hadoop期末实训总结

hadoop期末实训总结

hadoop期末实训总结一、实训背景Hadoop是一个开源的分布式计算系统,能够处理大规模数据集。

在现实应用中,大数据的处理成为了一项重要的任务。

为了提高学生的实践能力和对Hadoop分布式计算系统的了解,我们学校安排了Hadoop期末实训。

二、实训目标本次实训的主要目标是让学生了解Hadoop的基本概念和原理,并能够通过实践掌握Hadoop的使用方法和技巧。

具体来说,实训的目标如下:1. 掌握Hadoop的基本概念和原理。

Hadoop是一个分布式计算系统,由一个主节点和多个从节点组成。

主节点负责整个系统的管理和调度,从节点负责存储和计算。

学生需要了解Hadoop的基本概念,例如NameNode、DataNode等,并了解Hadoop的工作流程和原理。

2. 掌握Hadoop的安装和配置。

学生需要学会如何在操作系统上安装和配置Hadoop。

这包括设置Hadoop的环境变量、修改配置文件等。

在安装和配置过程中,学生需要应对各种问题和错误,锻炼自己的解决问题能力。

3. 掌握Hadoop的使用方法和技巧。

学生需要学会使用Hadoop的各种命令和工具,例如HDFS命令、MapReduce程序等。

在使用Hadoop的过程中,学生需要处理各种不同类型的数据集,了解Hadoop的数据处理能力和性能。

三、实训过程1. 学习阶段在实训开始前,学生需要通过自学来了解Hadoop的基本概念和原理。

学生可以通过阅读相关教材和文档,观看在线视频,参加线下培训等方式来学习。

2. 实践阶段在学习阶段结束后,学生需要进行实际操作。

学生首先需要在自己的计算机上安装Hadoop,并按照要求进行配置。

然后,学生需要完成一系列小实验,例如创建一个HDFS 文件系统、上传和下载文件、运行一个简单的MapReduce程序等。

3. 项目开发阶段在完成小实验后,学生需要参与到一个真实的项目开发中。

每个学生会被分配到一个小组中,小组由4-5人组成。

Hadoop集群配置与数据处理入门

Hadoop集群配置与数据处理入门

Hadoop集群配置与数据处理入门1. 引言Hadoop是一个开源的分布式计算框架,被广泛应用于大规模数据处理和存储。

在本文中,我们将介绍Hadoop集群的配置和数据处理的基本概念与入门知识。

2. Hadoop集群配置2.1 硬件要求架设Hadoop集群需要一定的硬件资源支持。

通常,集群中包含主节点和若干个从节点。

主节点负责整个集群的管理,而从节点负责执行具体的计算任务。

在硬件要求方面,主节点需要具备较高的计算能力和存储空间。

从节点需要具备较低的计算能力和存储空间,但数量较多。

此外,网络带宽也是一个关键因素。

较高的网络带宽可以加快数据的传输速度,提升集群的效率。

2.2 软件要求Hadoop运行在Java虚拟机上,所以首先需要确保每台主机都安装了适当版本的Java。

其次,需要安装Hadoop分发版本,如Apache Hadoop或Cloudera等。

针对集群管理,可以选择安装Hadoop的主节点管理工具,如Apache Ambari或Cloudera Manager。

这些工具可以帮助用户轻松管理集群的配置和状态。

2.3 配置文件Hadoop集群部署需要配置多个文件。

其中,最重要的是核心配置文件core-site.xml、hdfs-site.xml和yarn-site.xml。

core-site.xml配置Hadoop的核心参数,如文件系统和输入输出配置等;hdfs-site.xml用于配置Hadoop分布式文件系统;yarn-site.xml配置Hadoop资源管理器和任务调度器相关的参数。

3. 数据处理入门3.1 数据存储与处理Hadoop的核心之一是分布式文件系统(HDFS),它是Hadoop集群的文件系统,能够在集群中存储海量数据。

用户可以通过Hadoop的命令行工具或API进行文件的读取、写入和删除操作。

3.2 数据处理模型MapReduce是Hadoop的编程模型。

它将大规模的数据集拆分成小的数据块,并分配给集群中的多个计算节点进行并行处理。

Hadoop学习总结

Hadoop学习总结

Hadoop学习总结HDFS相关HDFS写数据的流程⾸先由客户端向NameNode服务发起写数据请求NameNode收到请求后会进⾏基本验证验证类容包括对请求上传的路径进⾏合法验证对请求的⽤户进⾏权限验证验证没有问题后,NameNode会响应客户端允许上传接下来客户端会对⽂件按照blocksize⼤⼩进⾏切块,切完后依次以块为单位上传此时客户端会请求上传第⼀个块信息服务端接到上传请求后会依据HDFS默认机架感知原理,返回3台存放数据块副本的DataNode机器客户端收到机器列表后会依据⽹络拓扑原理找到其中⼀台机器进⾏传输通道的建⽴然后依次和三台机器进⾏串⾏连接这样的连接主要是为了减轻客户端本地IO的压⼒当通道建⽴成功后,客户端会通过HDFS的FSOutputStream流对象进⾏数据传输数据传输的最⼩单位为packet传输过程中每台DataNode服务器串⾏连接,依次将数据传递最后⼀个数据块被传输完成后相当于⼀次写⼊结束,如果还有数据块要传输,那就接着传输第⼆个数据块HDFS读数据的流程和写数据⼀样,由客户端向NameNode发出请求NameNode收到请求后会进⾏⽂件下载路径的合法性以及权限验证如果验证没问题,就会给客户端返回⽬标⽂件的元数据信息信息中包含⽬标⽂件数据块对应的DataNode的位置信息然后客户端根据具体的DataNode位置信息结合就近原则⽹络拓扑原理找到离⾃⼰最近的⼀台服务器对数据进⾏访问和下载最后通过HDFS提供的FSInputStream对象将数据读取到本地如果有多个块信息就会请求多次DataNode直到⽬标⽂件的全部数据被下载HDFS的架构及每个服务的作⽤HDFS是Hadoop架构中负责完成数据分布式存储管理的⽂件系统⾮⾼可⽤集群⼯作时会启动三个服务,分别是NameNode、DataNode以及SecondaryNameNode其中NameNode是HDFS的中⼼服务,主要维护管理⽂件系统中的⽂件的元数据信息DataNode主要负责存储⽂件的真实数据块信息DataNode的数据块信息中也包含⼀些关于当前数据块的元数据信息,如检验值,数据长度,时间戳等在⾮⾼可⽤HDFS集群中,NameNode和DataNode可以理解为是⼀对多的关系⼆者在集群中也要保存通信,通常默认3秒钟会检测⼀下⼼跳最后SecondaryNameNode的⼯作很单⼀,就是为了给NameNode的元数据映像⽂件和编辑⽇志进⾏合并,并⾃⼰也保留⼀份元数据信息,以防NameNode元数据丢失后有恢复的保障HDFS中如何实现元数据的维护NameNode的元数据信息是通过fsimage⽂件 + edits编辑⽇志来维护的当NameNode启动的时候fsimage⽂件和edits编辑⽇志的内容会被加载到内存中进⾏合并形成最新的元数据信息当我们对元数据进⾏操作的时候,考虑到直接修改⽂件的低效性,⽽不会直接修改fsimage⽂件⽽是会往edits编辑⽇志⽂件中追加操作记录当满⾜⼀定条件时,会让Secondary NameNode来完成fsimage⽂件和edits编辑⽇志⽂件的合并Secondary NameNode⾸先会让NameNode停⽌对正在使⽤的edits编辑⽇志⽂件的使⽤,并重新⽣成⼀个新的edits编辑⽇志⽂件接着把NameNode的fsimage⽂件和已停⽌的edits⽂件拷贝到本地在内存中将edits编辑⽇志⽂件的操作记录合并到fsimage⽂件中形成⼀个最新的fsimage⽂件最后会将这个最新的fsimage⽂件推送给NameNode并⾃⼰也备份⼀份NN和DN的关系,以及DN的⼯作流程从数据结构上看,就是⼀对多的关系⼀个HDFS集群中只能有⼀个NameNode⽤于维护元数据信息,同时会有多个DataNode⽤于存储真实的数据块当HDFS集群启动的时候,会⾸先进⼊到安全模式下在安全模式下我们只能对数据进⾏读取不能进⾏任何写操作此时集群的每⼀台DataNode会向NameNode注册⾃⼰注册成功后DataNode会上报⾃⼰的数据块详细信息当数据块汇报满⾜最⼩副本条件后,会⾃动退出安全模式此后DataNode和NameNode每三秒会通信⼀次,如果NameNode检测到DataNode没有响应,会继续检测⼀直到10分30秒后还没有检测到,就确定当前的DataNode不可⽤MapReduce相关⼿写MR的⼤概流程和规范MR程序的结构可以分为3部分,⼀是程序的执⾏⼊⼝,通常简称为驱动类驱动类主要编写MR作业的提交流程以及⾃定义的⼀些配置项⼆是Map阶段核⼼类,需要⾃定义并继承Mappper类,重写Mapper中的map⽅法在map⽅法中编写⾃⼰的业务逻辑代码将数据处理后利⽤context上下⽂对象的写出落盘三是Reduce阶段的核⼼类,同时也需要继承Hadoop提供的Reducer类并重写reduce⽅法在reduce⽅法中编写⾃⼰的业务逻辑代码,处理完数据后通过context上下⽂对象将数据写出,这也就是最终的结果⽂件如何实现Hadoop的序列化,Hadoop的序列化和Java的序列化有什么区别⾸先,序列化是把内存中的Java对象转化成⼆进制字节码,反序列化是将⼆进制字节码转化成Java对象通常我们在对Java对象进⾏磁盘持久化写⼊或将Java对象作为数据进⾏⽹络传输的时候需要进⾏序列化相反如果要将数据从磁盘读出并转化成Java对象需要进⾏反序列化实现Hadoop中的序列化需要让JavaBean对象实现Writable接⼝,并重写wirte()⽅法和readFields()⽅法其中wirte()是序列化⽅法,readFields()⽅法是反序列化⽅法Hadoop序列化和Java序列化的区别在于,java序列化更重量级Java序列化后的结果不仅仅⽣成⼆进制字节码⽂件,同时还会针对当前Java对象⽣成对应的检验信息以及集成体系结构这样的话,⽆形中我们需要维护更多的数据但是Hadoop序列化不会产⽣除了Java对象内部属性外的任何信息,整体内容更加简洁紧凑,读写速度相应也会提升很多,这也符合⼤数据的处理背景MR程序的执⾏流程MR程序执⾏先从InputFormat类说起,由InputFormat负责数据读⼊,并在内部实现切⽚每个切⽚的数据对应⽣成⼀个MapTask任务MapTask中按照⽂件的⾏逐⾏数据进⾏处理,每⼀⾏数据会调⽤⼀次我们⾃定义的Mapper类的map⽅法map⽅法内部实现具体的业务逻辑,处理完数据会通过context对象将数据写出到磁盘,接下来ReduceTask会开始执⾏⾸先ReduceTask会将MapTask处理完的数据结果拷贝过来每组相同key的values会调⽤⼀次我们⾃定义Reducer类的reduce⽅法当数据处理完成后,会通过context对象将数据结果写出到磁盘上InputFormat负责数据写份时候要进⾏切⽚,为什么切⽚⼤⼩默认是128M⾸先切⽚⼤⼩是可以通过修改配置参数来改变的,但默认情况下是和切块blocksize⼤⼩⼀致这样做的⽬的就是为了在读取数据的时候正好能⼀次性读取⼀个块的数据,避免了在集群环境下发⽣跨机器读取的情况如果跨机器读取会造成额外的⽹络IO,不利于MR程序执⾏效率的提升描述⼀下切⽚的逻辑MR中的切⽚是发⽣在数据读⼊的阶段中,所以我们要关注InputFormat的实现通过追溯源码,在InputFormat这个抽象类中有⼀个getSplits(),这个⽅法就是实现切⽚的具体逻辑⾸先关注两个变量,分别是minSize和maxSize,默认情况minSize = 1,maxSize = Long.MAX_VALUE源码中声明了⼀个集合List splits = new ArrayList(),⽤于装载将来的切⽚对象并返回接下来根据提交的job信息获取到当前要进⾏切⽚的⽂件详情⾸先判断当前⽂件是否可以进⾏切分,这⼀步主要考虑到⼀些不⽀持切分的压缩⽂件不能进⾏切⽚操作,否则就破坏了数据的完整性如果当前⽂件可以切⽚的话,就要计算切⽚的⼤⼩切⽚的⼤⼩⼀共需要三个因⼦,分别是minSize、maxSize、blocksize最后通过Math.max(minSize,Math.min(maxSize,blocksize)),计算逻辑获取到切⽚的⼤⼩默认情况下切⽚⼤⼩和数据块⼤⼩⼀致如果想要改变切⽚的⼤⼩可以通过修改mapreduce.input.fileinputformat.split.minsize(把切⽚调⼤)、mapreduce.input.fileinputformat.split.maxsize(把切⽚调⼩)两个参数实现获取到切⽚⼤⼩后继续往下执⾏,在最终完成切⽚之前还有⼀个关键判断就是判断剩余⽂件是否要进⾏切⽚CombineTextInputFormat机制是怎么实现的CombineTextInoutFormat是InputFormat的⼀个实现类,主要⽤于解决⼩⽂件场景⼤概思路是先在Job提交中指定使⽤InputFormat的实现类为CombineTextInputFormat接下来的切⽚过程中会先把当前⽂件的⼤⼩和设置的切⽚的最⼤值进⾏⽐较如果⼩于最⼤值,就单独划分成⼀块如果⼤于切⽚的最⼤值并⼩于两倍的切⽚的最⼤值,就把当前⽂件⼀分为⼆划分成两块以此类推逐个对⽂件进⾏处理,这个过程称之为虚拟过程最后⽣成真正的切⽚的时候,根据虚拟好的⽂件进⾏合并只要合并后⽂件⼤⼩不超过最开始设置好的切⽚的最⼤值那就继续追加合并直到达到设置好的切⽚的最⼤值此时就会产⽣⼀个切⽚,对应⽣成⼀个MapTaskShuffle机制流程当MapTask执⾏完map()⽅法后通过context对象写数据的时候开始执⾏shuffle过程⾸先数据先从map端写⼊到环形缓冲区内写出的数据会根据分区规则进⼊到指定的分区,并且同时在内存中进⾏区内排序环形缓冲区默认⼤⼩为100M当数据写⼊的容量达到缓冲区⼤⼩的80%,数据开始向磁盘溢写如果数据很多的情况下,可能发⽣N次溢写这样在磁盘上就会产⽣多个溢写⽂件,并保证每个溢写⽂件中区内是有序的到此shuffle过程在Map端就完成了接着Map端输出的数据会作为Reduce端的数数据再次进⾏汇总操作此时ReduceTask任务会把每⼀个MapTask中计算完的相同的分区的数据拷贝到ReduceTask的内存中,如果内存放不下,开始写⼊磁盘再接着就是对数据进⾏归并排序,排序完还要根据相同的key进⾏分组将来⼀组相同的key对应的values调⽤⼀次reduce⽅法,如果有多个分区就会产⽣多个ReduceTask来处理,处理的逻辑都⼀样MR程序中由谁来决定分区的数量,哪个阶段环节会开始往分区中写数据在Job提交的时候可以设置ReduceTask的数量ReduceTask的数量决定分区的编号默认有多少ReduceTask任务就会产⽣多少个分区在Map阶段的map⽅法中通过context.wirte()往外写数据的时候其实就是在往指定的分区中写数据了阐述MR中实现分区的思路默认情况下不指定分区数量就会有⼀个分区如果要指定分区,可以通过在Job提交的时候指定ReduceTask的数量来指定分区的数量从Map端处理完数据后,数据就会被溢写到指定的分区中决定kv数据究竟写到哪个分区中是通过Hadoop提供的Partitioner对象控制的Partitioner对象默认实现HashPartitioner类它的规则就是⽤当前写出数据的key和ReduceTask的数量做取余操作,得到的结果就是当前数据要写⼊的分区的编号除此之外,我们也可以⾃定义分区器对象需要继承Hadoop提供的Partitioner对象,然后重写getPartitioner()⽅法在该⽅法中根据⾃⼰的业务实现分区编号的返回最后再将我们⾃定义的分区器对象设置到Job提交的代码中覆盖默认的分区规则Hadoop中实现排序的两种⽅案分别是什么第⼀种⽅式是直接让参与⽐较的对象实现WritableComparable接⼝并指定泛型接下来实现CompareTo()⽅法,在该⽅法中实现⽐较规则即可第⼆种⽅式是⾃定义⽐较器对象,需要继承WritableComparator类,重写它的compare⽅法在构造器中调⽤⽗类对当前的要参与⽐较的对象进⾏实例化当前要参与⽐较的对象必须要实现WritableComparable接⼝最后在Job提交代码中将⾃定义的⽐较器对象设置到Job中就可以了编写MR的时候什么情况下使⽤Combiner,实现的具体流程是什么Combiner在MR中是⼀个可选流程,通常也是⼀种优化⼿段当我们执⾏完Map阶段的计算后数据量⽐较⼤,kv组合过多这样在Reduce阶段执⾏的时候会造成拷贝⼤量的数据以及汇总更多的数据为了减轻Reduce的压⼒,此时可以选择在Map阶段进⾏Combiner操作,将⼀些汇总⼯作提前进⾏OutputFormat⾃定义实现流程OutputFormat是MR中最后⼀个流程,它主要负责数据最终结果的写出如果对最终输出结果⽂件的名称或者输出路径有个性化需求,就可以通过⾃定义OutputFormat来实现⾸先⾃定义⼀个OutputFormat类,然后继承OutputFormat重写OutputFormat的getRecordWriter()⽅法,在该⽅法中返回RecordWriter对象由于RecordWriter是Hadoop内部对象,如果我们想实现⾃⼰的逻辑,还得⾃定义⼀个RecordWriter类,然后继承RecordWriter类重写该类中的write()⽅法和close()⽅法MR实现MapJoin的思路,MapJoin的局限性是什么Mapjoin解决了数据倾斜给Reduce阶段带来的问题⾸先MapJoin的前提就是我们需要join的两个⽂件⼀个是⼤⽂件,⼀个是⼩⽂件在此前提下,我们可以将⼩的⽂件提前缓存到内存中,然后让Map端直接处理⼤⽂件每处理⼀⾏数据就根据当前的关联字段到内存中获取想要的数据,然后将结果写出。

Hadoop基础知识培训

Hadoop基础知识培训
挖掘算法(Mahout) 搜索(Solr) Sqoop 数据仓库(Hive) 数据库(Hbase) 批处理(Pig) MapReduce Tez Spark Storm
存储+计算(HDFS2+Yarn)
集中存储和计算的主要瓶颈
Oracle IBM
EMC存储
scale-up(纵向扩展)
➢计算能力和机器数量成正比 ➢IO能力和机器数量成非正比
多,Intel,Cloudera,hortonworks,MapR • 硬件基于X86服务器,价格低,厂商多 • 可以自行维护,降低维护成本 • 在互联网有大规模成功案例(BAT)
总 结
• Hadoop平台在构建数据云(DAAS)平台有天 然的架构和成本的优势
成本投资估算:从存储要求计算所需硬件及系统软件资源(5000万用户 为例)
往HDFS中写入文件
• 首要的目标当然是数 据快速的并行处理。 为了实现这个目标, 我们需要竟可能多的 机器同时工作。
• Cient会和名称节点达 成协议(通常是TCP 协议)然后得到将要 拷贝数据的3个数据节 点列表。然后Client将 会把每块数据直接写 入数据节点中(通常 是TCP 协议)。名称 节点只负责提供数据 的位置和数据在族群 中的去处(文件系统 元数据)。
• 第二个和第三个数据 节点运输在同一个机 架中,这样他们之间 的传输就获得了高带 宽和低延时。只到这 个数据块被成功的写 入3个节点中,下一 个就才会开始。
• 如果名称节点死亡, 二级名称节点保留的 文件可用于恢复名称 节点。
• 每个数据节点既扮演者数据存储的角色又 冲当与他们主节点通信的守护进程。守护 进程隶属于Job Tracker,数据节点归属于 名称节点。

hadoop知识点

hadoop知识点

hadoop知识点一、Hadoop简介Hadoop是一个开源的分布式计算系统,由Apache基金会开发和维护。

它能够处理大规模数据集并存储在集群中的多个节点上,提供高可靠性、高可扩展性和高效性能。

Hadoop主要包括两个核心组件:Hadoop Distributed File System(HDFS)和MapReduce。

二、HDFS1. HDFS架构HDFS是一个分布式文件系统,它将大文件分割成多个块并存储在不同的节点上。

它采用主从架构,其中NameNode是主节点,负责管理整个文件系统的命名空间和访问控制;DataNode是从节点,负责存储实际数据块。

2. HDFS特点HDFS具有以下特点:(1)适合存储大型文件;(2)数据冗余:每个数据块都会复制到多个节点上,提高了数据可靠性;(3)流式读写:支持一次写入、多次读取;(4)不适合频繁修改文件。

三、MapReduce1. MapReduce架构MapReduce是一种编程模型,用于处理大规模数据集。

它将任务分为两个阶段:Map阶段和Reduce阶段。

Map阶段将输入数据划分为若干组,并对每组进行处理得到中间结果;Reduce阶段将中间结果进行合并、排序和归约,得到最终结果。

2. MapReduce特点MapReduce具有以下特点:(1)适合处理大规模数据集;(2)简化了分布式计算的编程模型;(3)可扩展性好,可以在数百甚至数千台服务器上运行。

四、Hadoop生态系统1. Hadoop Common:包含Hadoop的基本库和工具。

2. HBase:一个分布式的、面向列的NoSQL数据库。

3. Hive:一个数据仓库工具,可以将结构化数据映射成HiveQL查询语言。

4. Pig:一个高级数据流语言和执行框架,用于大规模数据集的并行计算。

5. ZooKeeper:一个分布式协调服务,用于管理和维护集群中各个节点之间的状态信息。

五、Hadoop应用场景1. 日志分析:通过Hadoop收集、存储和分析日志数据,帮助企业实现对用户行为的监控和分析。

hadoop学习笔记(十):hdfs在命令行的基本操作命令(包括文件的上传和下载和hdfs。。。

hadoop学习笔记(十):hdfs在命令行的基本操作命令(包括文件的上传和下载和hdfs。。。

hadoop学习笔记(⼗):hdfs在命令⾏的基本操作命令(包括⽂件的上传和下载和
hdfs。

hdfs命令⾏
(1)查看帮助
hdfs dfs -help
(2)查看当前⽬录信息
hdfs dfs -ls /
(3)上传⽂件
hdfs dfs -put /本地路径 /hdfs路径
(4)剪切⽂件
hdfs dfs -moveFromLocal a.txt /aa.txt
(5)下载⽂件到本地
hdfs dfs -get /hdfs路径 /本地路径
(6)合并下载
hdfs dfs -getmerge /hdfs路径⽂件夹 /合并后的⽂件
(7)创建⽂件夹
hdfs dfs -mkdir /hello
(8)创建多级⽂件夹
hdfs dfs -mkdir -p /hello/world
(9)移动hdfs⽂件
hdfs dfs -mv /hdfs路径 /hdfs路径
(10)复制hdfs⽂件
hdfs dfs -cp /hdfs路径 /hdfs路径
(11)删除hdfs⽂件
hdfs dfs -rm /aa.txt
(12)删除hdfs⽂件夹
hdfs dfs -rm -r /hello
(13)查看hdfs中的⽂件
hdfs dfs -cat /⽂件
hdfs dfs -tail -f /⽂件
(14)查看⽂件夹中有多少个⽂件
hdfs dfs -count /⽂件夹
(15)查看hdfs的总空间
hdfs dfs -df /
hdfs dfs -df -h /
(16)修改副本数
hdfs dfs -setrep 1 /a.txt。

Hadoop_Ubuntu学习笔记

Hadoop_Ubuntu学习笔记

Hadoop+Ubuntu 学习笔记——IT 进行时(zhengxianquan AT )环备一、境准Hadoop-0.20.1Ubuntu 9.10二、安装JDK6开终执打端,行以下命令:sudo apt-get install sun-java6-jdk按照提示做就是了。

配置JAVA 环变境量:sudo gedit /etc/environment在其中添加如下两行:CLASSPATH=.:/usr/lib/jvm/java-6-sun/libJAVA_HOME=/usr/lib/jvm/java-6-sun执行命令:sudo gedit /etc/jvm,在最前面加入:/usr/lib/jvm/java-6-sun三、配置SSH见方便起,新增hadoop 组户的及其同名用:zhengxq@zhengxq-desktop:~$ sudo addgroup hadoopzhengxq@zhengxq-desktop:~$ sudo adduser --ingroup hadoop hadoop 别则请接下来需要做些特的工作(否参考FAQ“xx is not in the sudoers file”): hadoop@zhengxq-desktop:~$ suroot@zhengxq-desktop:/home/hadoop# ls -l /etc/sudoers-r--r----- 1 root root 557 2009-11-10 22:01 /etc/sudoersroot@zhengxq-desktop:/home/hadoop# chmod u+w /etc/sudoersroot@zhengxq-desktop:/home/hadoop# ls -l /etc/sudoers-rw-r----- 1 root root 557 2009-11-10 22:01 /etc/sudoersroot@zhengxq-desktop:/home/hadoop# gedit /etc/sudoers在root ALL=(ALL) ALL后面添加:hadoop ALL=(ALL) ALLroot@zhengxq-desktop:/home/hadoop# chmod u-w /etc/sudoersroot@zhengxq-desktop:/home/hadoop# exit安装openssh-server:$ sudo apt-get install openssh-server建立SSH KEY:zhengxq@zhengxq-desktop:~$ su hadoophadoop@zhengxq-desktop:/home/zhengxq$ ssh-keygen -t rsa -P ""Generating public/private rsa key pair.Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):Created directory '/home/hadoop/.ssh'.Your identification has been saved in /home/hadoop/.ssh/id_rsa.Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.The key fingerprint is:f4:5f:6a:f4:e5:bf:1d:c8:08:28:1c:88:b4:31:4a:a0 hadoop@zhengxq-desktop ……启用SSH KEY:hadoop@zhengxq-desktop:~$ cat $HOME/.ssh/id_rsa.pub >>$HOME/.ssh/authorized_keyshadoop@zhengxq-desktop:~$ sudo /etc/init.d/ssh reload* Reloading OpenBSD Secure Shell server's configuration sshd [ OK ]验证SSH的配置:hadoop@zhengxq-desktop:~$ ssh localhostThe authenticity of host 'localhost (::1)' can't be established.RSA key fingerprint is 52:9b:e2:62:93:01:88:e6:46:a8:16:68:52:91:8a:ea.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added 'localhost' (RSA) to the list of known hosts.Linux zhengxq-desktop 2.6.31-14-generic #48-Ubuntu SMP Fri Oct 1614:04:26 UTC 2009 i686……四、安装配置hadoop下及安装4.1载下一个0.20.1版本;到/dyn/closer.cgi/hadoop/core/载下,并改所有者hadoop:tar压缩或者直接解到/usr/local/hadoop/变为zhengxq@zhengxq-desktop:/usr/local$ sudo chown -R hadoop:hadoop hadoop4.2配置4.2.1配置$HADOOP_HOME/conf/hadoop-env.shzhengxq@zhengxq-desktop:/usr/local/hadoop$ cd had*zhengxq@zhengxq-desktop:/usr/local/hadoop/hadoop-0.20.1$ gedit conf/hadoop-env.shzhengxq@zhengxq-desktop:/usr/local/hadoop/hadoop-0.20.1$ sudo geditconf/hadoop-env.sh修改点:为export JAVA_HOME=/usr/lib/jvm/java-6-sun4.2.2配置$HADOOP_HOME/conf/core-site.xmlzhengxq@zhengxq-desktop:/usr/local/hadoop/hadoop-0.20.1$ sudo geditconf/core-site.xml空的,内容加上:<property><name></name><value>hdfs://localhost:9000</value></property><property><name>dfs.replication</name><value>1</value></property><property><name>hadoop.tmp.dir</name><value>/home/hadoop/tmp</value></property></property>注:如没有配置hadoop.tmp.dir时统认临时录为参数,此系默的目:/tmp/hadoop-才行,否会出。

hadoop实训个人总结与收获

hadoop实训个人总结与收获

Hadoop实训个人总结与收获引言Hadoop作为大数据处理的核心技术之一,在当前的数据驱动时代扮演了至关重要的角色。

通过参加Hadoop实训,我全面、深入地学习了Hadoop的核心概念、架构和使用方法,并通过实际操作加深了对Hadoop的理解和实践能力。

本文将对我在Hadoop实训中的重要观点、关键发现和进一步思考进行总结。

重要观点Hadoop的核心概念在实训中,我深入学习了Hadoop的核心概念,包括Hadoop分布式文件系统(HDFS)、MapReduce编程模型和YARN资源管理器。

这些核心概念是构建大规模数据处理系统的基础。

HDFS作为一个高容错性的分布式文件系统,可以将大规模数据存储在多个节点上,实现数据的可靠性和高可用性。

MapReduce编程模型则为并行处理大规模数据提供了一个简单而有效的框架,通过将任务分解为多个Map和Reduce阶段,实现了高效的数据处理和计算。

YARN资源管理器则实现了对集群资源的高效调度和分配,提供了更好的资源利用率。

Hadoop生态系统Hadoop不仅仅是一个单独的分布式计算框架,还构建了一个完整的生态系统,涵盖了各种数据处理和存储技术。

在实训中,我接触了一些Hadoop生态系统的重要组件,如HBase、Hive、Sqoop和Flume等。

这些组件分别承担了数据存储、数据仓库、数据导入和数据流等不同的角色。

通过熟悉这些组件的使用方法,我进一步掌握了构建大数据处理系统的能力。

大数据处理的挑战与解决方案实训中,我也认识到了大数据处理所面临的挑战,如数据规模庞大、数据类型多样、数据质量参差不齐等。

面对这些挑战,我们需要采取相应的解决方案。

在Hadoop 中,可以通过横向扩展集群来应对数据规模扩大的需求,通过数据预处理和清洗来提高数据质量,通过多样化的基于Hadoop的工具来处理不同类型的数据。

关键发现分布式计算的优势通过实训,我深刻认识到分布式计算的优势。

分布式计算充分利用了集群中多台计算机的计算能力,将任务分解成多个子任务并行处理,从而显著提高了计算速度和效率。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。

Hadoop的框架最核心的设计就是:HDFS(分布式文件系统(Hadoop Distributed File System))和MapReduce。

HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。

MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。

概念"Map(映射)"和"Reduce(化简)"使用下面的命令来设置当前主机的主机名称:要永久重设主机名则需手工修改/etc/hostname文件,然后重启。

由于Linux原始的防火墙工具iptables过于繁琐,所以ubuntu默认提供了一个基于iptable之上的防火墙工具ufw。

开启/关闭防火墙(默认设置是disable)【sudo ufw enable|disable】查看防火墙状态【sudo ufw status】通过【ssh】连通两台【ubuntu】(前提两台ubuntu都能连网,这里是NAT网络连接的,都下载好并打开了sshd服务),然后在ubuntuA 中【vim /etc/hosts】把ubuntuA和ubuntuB的ip写在里面,然后在ubuntuB中【vim /etc/hosts】把ubuntuA和ubuntuB的ip写在里面。

然后【vim /etc/ssh/sshd_config】把它弄成下面这样的【如28 33 40 45 52】,然后再重启。

另一台【ubuntu重复相同的工作】,然后再重启,如果【ssh localhost】能连上就成功了。

然后两台机用,ubuntuB【ssh 10.0.2.4 】, ubuntuA 【ssh 10.0.2.5 】就可以建立相互通信scp 可以在 2个 linux 主机间复制文件;使用scp命令需要服务端linux提供sshd服务(linux默认是没有安装sshd服务的)如果是文件夹,使用scp -r即可把ubuntuA中【/home】下的【jdk1.8.0_91】目录复制到ubuntuB中【/home】下:再查看一个文件 /etc/profile [环境配置文件]再配置刚才自己安装的 jdk 然后注销,再登录后就可以用了。

把ubuntuA中【/home】下的【hello.java】文件复制到ubuntuB中【/home】下:ubuntu下ssh免密码登录配置:两台机器 : root ubuntuA(10.0.2.4) 和 root ubuntuB(10.0.2.5)1、确认安装了【sshd】[netstat –anp | more 看有无22端口]2、生成公钥/私钥对:这里为了简单,我们使用root来生成rsa公钥/私钥对:3、仅在ubuntuA上执行输入【root@ubuntuB】的密码后,在【root@ubuntuB】中(当然前是先在root@ubuntuB中的root目录下生成公钥/私钥对)就可以发现多了一个【authorized_keys】的文件。

注意【authorized_keys】和【id_rsa.pub】的权限都是644. 【id_rsa】的权限是600.至此就可以实现在【root@ubuntuA】中无密码的连到【root@ubuntuB】4、仅在ubuntuB上执行与3相同的操作,就可以实现在【root@ubuntuB】中无密码的连到【root@ubuntuA】下载和安装及配置hadoop的过程配置完【/etc/hosts】文件后要能【ping ubuntuA】和【ping ubuntuB】都能ping通。

再关闭ubuntu的防火墙(默认是关闭的,可以用 ufw status 查看,若没有关闭用【sudo ufw disable】关闭)然后把在ubuntuA中配好的hadoop分发到ubuntuB中去,再到ubuntuB中的home目录下发现已经拷贝过来了。

再在【ubuntuB】hosts文件中做相应的修改配置完【/etc/hosts】文件后要能【ping ubuntuA】和【ping ubuntuB】都能ping通。

看到【successfully formatted】说明格式化成功了。

启动所有服务是问要密码是因为我们没有配置ubuntuA到ubuntuA的免密码把这段密文拷贝到【authorized_keys】里去就可以了然后发现【ssh ubuntuA】就不会问你要密码了(对ubuntuB也是上面一样的工作使ubuntuB到ubuntuB免密码)这是刚才不成功的启动,启动了部分进程要把它【kill】掉,要使ubuntuA到ubuntuB中的进程只有jps才可以再次重新启动再来看看可不可启动hadoop整个集群。

出现这样的信息之后,才可以说启动hadoop整个集群成功。

代码测试hadoop是不是真正完全安装配置完成。

至此这一切都说明我们安装和配置的hadoop没有任何问题,可以正常工作。

echo 文件内容>文件名,echo 文件内容>>文件名用echo命令输出加引号的字符串时,将字符串原样输出;用echo命令输出不加引号的字符串时,将字符串中的各个单词作为字符串输出,各字符串之间用一个空格分割。

Ps:【echo】后面不加【“”】也可以。

推荐使用这种形式【echo “字符串”】注意区别:【bin/Hadoop fs –put ../input/ ./in】与【bin/Hadoop fs –put ../input ./in】第一条命令的结果是可以发现【ll】与【ls -al】的功能是一样的。

这里可以发现【Namenode】在ubuntuA中,【Datanode】在ubuntuB中hadoop fs –rm [-skipTrash] <src>:删除匹配pattern的指定文件,等价于unix下的rm <src>。

hadoop fs –rmr [skipTrash] <src>:递归删掉所有的文件和目录,等价于unix下的rm –rf <src>。

注意配置【core-site.xml】完后要重启集群才会生效(先【bin/stop-all.sh】,在【bin/start-all.sh】)(下面测试trash机制)上面这段代码的作用就是把一个文件的内容在屏幕上打印出来;把在运行上面的这段代码之前要做一下的工作:(1:设置Hadoop的类目录;2:设置搜索目录(即配置一些环境变量);).bash_profile是在你每次登录的时候执行的;.bashrc是在你新开了一个命令行窗口时执行的(功能一样的)。

然后用【env】命令检查是否加进去了(发现已加入)把上面的代码从权威指南中拷贝出来运行看会出那些错(通过安装vbox增强功能,在Windows下编辑好,再拉进ubuntu中)这是由于没有导入一些相关的类(导入类在javac);【javac编译后的文件一般用java运行,这里用Hadoop的方法】tar –zxvf 后注意要重新开一个窗口才会生效的(Ctrl+Alt+T)/home/apache-ant-1.9.7/bin/ant经过【ant】编译后多了【bulid】和【HDFSJavaAPI.jar】两个文件注意编译之前记得打开服务,执行上面的命令具体的安装参见【第一课h讲,pdf P88】搭建Hadoop2.x的集成开发环境:【VirtualBox-5.0.20-106931-Win】,【ubuntu-16.04-desktop-amd64.iso】,【jdk-8u91-linux-x64】(先用vbox安装64位ubuntu01,02,03 vdi备份路径如下,每台ubuntu都设置root登录,安装vim,安装vbox增强功能,然后安装jdk及在[.bashrc]中配置相应的环境变量)设置ubuntu01,02,03之间无密码连接(可以先设置有密码连接) ubuntu01 root下的配置好的【.bashrc】环境变量及安装好的jdk目录复制到untu02,03相应的位置,这样就可以减少编辑配置(免密码先配置好);至此【ubuntu01,02,03之间已近能无密码连接,且每台ubuntu上都装好了jdk及配置好了环境变量】下面开始下载安装hadoop2.x解压完后进入创建三个文件夹,【tmp,name,data】然后在改一些相应的配置文件:默认没有【mapred-site.xml】文件,copy mapred-site.xml.template 一份为 mapred-site.xml即可然后同步该文件夹,到ubuntu02,03相应的地方再格式化hdfs:看到【successfully formatted】说明格式化成功了。

(没有出现像视频中出现64位ubuntu的那种异常)注意敲完上面两条命令之后要看到下面才算启动成功,否则要把不成功的启动里的像【NameNode】等用【kill -9 4617】全部删掉只剩【Jps】,再去查看是不是配置弄错了,然后在重新启动上面两条命令。

【ps:从hadoop外面导入的文件生成jar包(如hadoop-mapreduce-examples-2.7.2),默认是放在/home/hadoop-2.7.2/share/Hadoop/mapreduce】下的,与hadoop-1.x不同。

至此【hadoop-2.7.2】已完全安装及配置完毕。

注意把【apache-maven-3.3.3】移到一个公众目录下(如 /usr/local),这样大家都可以用,不能像hadoop这样放在某个用户下注意要使设置的环境变量生效可以重开页面在用 env看加进去了没执行完上面4条编译命令之后会发现在【/usr/local/bin】实例用map-reduce分析气象数据集:(用的hadoop为1.x)准备工作:1:气象数据这里只用一小部分的1950的数据【040550-99999-1950.gz】(数据网上下载的)在zcat 040550-99999-1950.gz > 040550-99999-1950.txt2:在复制出PDF中三个相应的.java文件(已传360云盘)注意上面的三个【MaxTemperature】的java文件要同时编译不然会出错的编译会出错;要想下面这样操作才不会出错ubuntu安装eclipse:在网上下载好【hadoop-eclipse-plugin-1.2.1】执行,没有eclipse-plugin 自己创建;再把复制到下面目录里去再重启【eclipse】执行下面的操作(具体参见hadoop_v4_04h)打开【Other】再点【Map/Reduce】再点【ok】然后就可以看到【Map/Reduce Location】了。

相关文档
最新文档