版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章Hadoop概述第1章-Hadoop概述第2章-Hadoop安装与配置管理第3章-HDFS技术第4章-Yarn技术第5章-MapReduce技术第6章-HadoopI_O操作第7章-海量数据库HBase技术第8章-ZooKeeper技术第9章-分布式数据仓库技术Hive第10章-Hadoop与RDBMS数据迁移工具Sqoop第11章-Hadoop实时数据处理技术全套可编辑PPT课件1.Hadoop起源-LOGONutchGFS分布式存储系统论文MapReduce分布式处理技术论文200420031.Hadoop起源-发展历程1.Hadoop起源-发展历程1.Hadoop起源–设计思想1.使用普通机器高性能,低成本2.数据冗余(HDFS)3.并行化处理(MR)4.移动计算海量数据的情况下移动计算比移动数据更高效2.Hadoop体系架构–基本组件2.Hadoop体系架构–生态3.Hadoop与分布式开发C/SB/S3.Hadoop与分布式开发hadoop应用开发MapperReducer实现实现4.Hadoop应用案例1、Hadoop在中国传统文化的应用2、Hadoop在搜索引擎中的应用3、Hadoop在电商平台中的应用4.Hadoop应用案例1、Hadoop在中国传统文化的应用文化遗产保护:Hadoop可以用于存储和管理大量的文化遗产数据,例如历史建筑、文物和艺术品等。这些数据可以被组织、分析和可视化,以帮助文化机构和研究人员更好地了解和保护中国传统文化。古籍数字化:Hadoop可以用于处理大规模的古籍数据,包括扫描、OCR、文字识别和文本分析等。这有助于加快古籍数字化的进程,使得更多的人能够方便地访问和研究中国传统文化。民俗文化研究:Hadoop可以用于分析大规模的民俗文化数据,例如节日庆典、民间传说和习俗等。这可以帮助研究人员更好地了解和保护中国传统的民俗文化,促进文化多样性的发展。语言文化保护:Hadoop可以用于处理大规模的语言数据,例如语音、文本和图像等。这可以帮助保护和传承中国传统的语言文化,例如方言和少数民族语言等。总的来说,Hadoop可以为中国传统文化的保护、研究和传承提供支持,帮助我们更好地了解和珍惜这些文化遗产。4.Hadoop应用案例2、Hadoop在搜索引擎中的应用
百度作为全球最大的中文搜索引擎公司,提供基于搜索引擎的各种产品,包括以网络搜索为主的功能性搜索,以贴吧为主的社区搜索,针对区域、行业的垂直搜索、MP3音乐搜索以及百科等,几乎覆盖了中文网络世界中所有的搜索需求。百度对海量数据处理的要求是比较高的,要在线下对数据进行分析,还要在规定的时间内处理完并反馈到平台上。百度在互联网领域的平台需求要通过性能较好的云平台进行处理,Hadoop就是很好的选择。在百度,Hadoop主要应用于日志的存储和统计;网页数据的分析和挖掘;商业分析,如用户的行为和广告关注度等;在线数据的反馈,及时得到在线广告的点击情况;用户网页的聚类,分析用户的推荐度及用户之间的关联度。4.Hadoop应用案例3、Hadoop在电商平台中的应用
在eBay上存储着上亿种商品的信息,而且每天有数百万种的新商品在增加,因此需要用云系统来存储和处理PB级别的数据,而Hadoop则是个很好的选择。Hadoop是建立在商业硬件上的容错、可扩展、分布式的云计算框架,eBay利用Hadoop建立了一个大规模的集群系统——Athena,它被分为5层,如图所示。TheEnd第2章Hadoop安装与配置管理15掌握集群安装过程原理熟悉SSH免密码登录原理了解Hadoop的关键配置选项
掌握动态管理节点方法学习目标168/21/2024参考书178/21/2024准备与配置安装环境188/21/2024安装虚拟机和Linux,虚拟机推荐使用vmware,PC可以使用workstation,服务器可以使用ESXi,在管理上比较方便。ESXi还可以通过拷贝镜像文件复制虚拟机,复制后自动修改网卡号和ip,非常快捷。如果只是实验用途,硬盘大约预留20-30G空间。以Centos为例,分区可以选择默认,安装选项选择DesktopGnome,以及Server、ServerGUI即可。其它Linux,注意选项里应包括ssh,vi(用于编辑配置文件),perl等(有些脚本里包含perl代码需要解析)到Oracle官网下载javajdk安装包,并且进行安装集群的概念198/21/2024计算机集群是一种计算机系统,
它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作。集群系统中的单个计算机通常称为节点,通常通过局域网连接。集群技术的特点:通过多台计算机完成同一个工作。达到更高的效率两机或多机内容、工作过程等完全一样。如果一台死机,另一台可以起作用三种运行模式208/21/2024单机模式:安装简单,几乎不用作任何配置,但仅限于调试用途
伪分布模式:在单节点上同时启动namenode、datanode、jobtracker、tasktracker、secondarynamenode等5个进程,模拟分布式运行的各个节点完全分布式模式:正常的Hadoop集群,由多个各司其职的节点构成机器分配218/21/2024机器名伪分布式模式的安装和配置步骤228/21/2024
下载并解压Hadoop安装包
进入Hadoop的解压目录,编辑conf/hadoop-env.sh文件(注意不同版本后配置文件的位置有所变化)编辑conf目录下core-site.xml、hdfs-site.xml和mapred-site.xml三个核心配置文件配置ssh,生成密钥,使到ssh可以免密码连接localhost格式化HDFS使用bin/start-all.sh启动Hadoop使用bin/stop-all.sh关闭HadoopStep1:各服务器安装JDK238/21/2024上传jdk-6u24-linux-i586.bin(下载的jdk文件)到/home/#cd/home/#./jdk-6u24-linux-i586.bin#mvjdk-6u24-linux-i586.binjdk#vi/etc/profile,在文件尾部添加exportJAVA_HOME=/home/jdkexportPATH=$JAVA_HOME/bin:$PATH保存退出#source/etc/profile#java-versionStep2:各服务器的网络设置248/21/2024修改机器名#hostname<机器名>#vi/etc/sysconfig/networkHOSTNAME=<机器名>保存退出,重启修改/etc/hosts修改/etc/sysconfig/network-scripts/相应的网络配置关闭防火墙#serviceiptablesstopifcfg-eth0文件参考:DEVICE="eth0"BOOTPROTO="static"ONBOOT="yes"TYPE="Ethernet"IPADDR=40PREFIX=24GATEWAY=hosts文件参考:40hadoop041hadoop142hadoop243hadoop3C:\WINDOWS\system32\drivers\etc\hostsStep3:SSH免密码登录258/21/2024从namenode到本身及各datanode免密码登录在各机器上执行#ssh-keygen-b1024-trsa一路回车在~/.ssh/生成文件id_rsaid_rsa.pub在namenode机器上执行:#cd~/.ssh/#scpid_rsa.pubroot@<各datanode的IP>:/home在各datanode机器上执行:#cd/home/#catid_rsa.pub>>/root/.ssh/authorized_keys
Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(SecureShell)来无密码登录启动和停止各个DataNode上的各种守护进程的同样原理,DataNode上也能使用SSH无密码登录到NameNode。Step4:在namenode安装Hadoop268/21/2024用软件上传hadoop文件到节点/home/hadoop目录解压文件#cd/home#tar-zxvfhadoop-*.tar.gz#mvhadoop-*hadoop修改/etc/profile#vi/etc/profileexportJAVA_HOME=/home/javaexportHADOOP_HOME=/home/hadoopexportPATH=$JAVA_HOME/bin:$PATH::$HADOOP_HOME/bin保存退出#source/etc/profileStep5:修改Hadoop的配置文件278/21/2024Step5:修改Hadoop的配置文件288/21/2024修改conf/hadoop-env.shexportJAVA_HOME=/home/javaexportHADOOP_HEAPSIZE=1024exportHADOOP_PID_DIR=/home/hadoop/pids保存退出配置conf/core-site.xml,增加以下内容<property><name></name><value>hdfs://hadoop0:9000</value></property><property><name>hadoop.tmp.dir</name><value>/home/hadoop/tmp</value></property>Step5:修改Hadoop的配置文件298/21/2024配置conf/hdfs-site.xml<property><name>dfs.replication</name><value>2</value></property><property><name>dfs.hosts.exclude</name><value>/home/hadoop/conf/excludes</value></property>配置conf/mapred-site.xml<property><name>mapred.job.tracker</name><value>hdfs://hadoop0:9001/</value></property>Step5:修改Hadoop的配置文件308/21/2024配置conf/mastersHadoop0配置conf/slaveshadoop1hadoop2hadoop3Step6:复制hadoop到各datanode并修改318/21/2024把hadoop0的hadoop目录、jdk目录、/etc/hosts、/etc/profile复制到hadoop1,hadoop2、hadoop3节点#cd$HADOOP_HOME/..#scp-rhadoophadoop1:/home#scp-rhadoophadoop2:/home#scp-rhadoophadoop3:/homeStep7:启动/停止Hadoop集群328/21/2024在hadoop0上第一次启动Hadoop,必须先格式化namenode#cd$HADOOP_HOME/bin#hadoopnamenode–format启动Hadoop#cd$HADOOP_HOME/bin#./start-all.sh如果启动过程,报错safemode相关的Exception执行命令#hadoopdfsadmin-safemodeleave然后再启动Hadoop停止Hadoopcd$HADOOP_HOME/bin#./stop-all.sh终端查看集群状态:#hadoopdfsadmin-report增加节点338/21/20241.修改新节点的/etc/hosts,增加namenode的主机名与IP2.修改namenode的配置文件conf/slaves添加新增节点的ip或host3.在新节点的机器上,启动服务#cd$HADOOP_HOME/bin#./hadoop-daemon.shstartdatanode#./hadoop-daemon.shstarttasktracker4.在NameNode节点执行#hadoopdfsadmin-refreshNodes5.均衡block在新节点上执行(如果是增加多个节点,只需在一个新节点)#cd$HADOOP_HOME/bin#./start-balancer.sh注意事项:1.必须确保slave的firewall已关闭;2.确保新的slave的ip已经添加到master及其他slaves的/etc/hosts中,反之也要将master及其他slave的ip添加到新的slave的/etc/hosts中删除节点348/21/2024在hadoop0上修改conf/hdfs-site.xml文件<property>
<name>dfs.hosts.exclude</name>
<value>/usr/local/hadoop/conf/excludes</value></property>确定要下架的机器dfs.hosts.exclude定义的文件内容为,每个需要下线的机器,一行一个。强制重新加载配置#hadoopdfsadmin-refreshNodes关闭节点
hadoopdfsadmin-report可以查看到现在集群上连接的节点正在执行Decommission,会显示:
DecommissionStatus:Decommissioninprogress执行完毕后,会显示:
DecommissionStatus:Decommissioned再次编辑excludes文件一旦完成了机器下架,它们就可以从excludes文件移除了登录要下架的机器,会发现DataNode进程没有了,但是TaskTracker依然存在,需要手工处理一下安全模式358/21/2024在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结
束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入
安全模式。在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。NameNode在启动的时候首先进入安全模式,如果datanode丢失的block达到一定的比例(1-dfs.safemode.threshold.pct),则系统会一直处于安全模式状态即只读状态。dfs.safemode.threshold.pct(缺省值0.999f)表示HDFS启动的时候,如果DataNode上报的block个数达到了
元数据记录的block个数的0.999倍才可以离开安全模式,否则一直是这种只读模式。如果设为1则HDFS永远是处于SafeMode。hadoopdfsadmin-safemodeenter|leave|get|wait基准测试368/21/2024hadoop-test-*.jarTestDFSIO-write-nrFiles10-fileSize1000hadoop-test-*.jarTestDFSIO-read-nrFiles10-fileSize1000集群监控——Web378/21/2024查看MapReduce相关http://hadoop0:50030/查看HDFS相关Hadoop管理员命令388/21/2024hadoopjob–list#列出正在运行的Jobhadoopjob–kill<job_id>#killjobhadoopfsck/#检查HDFS块状态,是否损坏hadoopfsck/-delete#检查HDFS块状态,删除损坏块hadoopdfsadmin–report#检查HDFS状态,包括DN信息hadoopdfsadmin–safemodeenter|leaveTheEnd第3章HDFS技术什么是分布式文件系统和HDFSHDFS设计目标HDFS的基本组件HDFS架构图和工作原理HDFS的shell操作java接口及常用api学习目标412024/8/21分布式文件系统和HDFS
422024/8/21分布式文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的基于客户机/服务器模式。通常,一个分布式文件系统提供多个供用户访问的服务器。分布式文件系统一般都会提供备份和容错的功能分布式文件系统一般都基于操作系统的本地文件系统ext3,ext4NTFS为什么需要分布式文件系统传统文件系统最大的问题是容量和吞吐量的限制多用户多应用的并行读写是分布式文件系统产生的根源一块硬盘的读写性能,比不上多块硬盘同时读写的性能1HDD=75MB/sec1000HDDs=75GB/sec扩充存储空间的成本低廉可提供冗余备份可以为分布式计算提供基础432024/8/21什么是HDFSHDFS=HadoopDistributedFileSystemHDFS是一个使用Java实现的、分布式的、可横向扩展的文件系统是Hadoop的核心组件基于*nix442024/8/21HDFS的设计目标基于廉价的普通硬件,可以容忍硬件出错系统中的某一台或几台服务器出现故障的时候,系统仍可用且数据保持完整大数据集(大文件)HDFS适合存储大量文件,总存储量可以达到PB,EB级HDFS适合存储大文件,单个文件大小一般在百MB级之上文件数目适中简单的一致性模型HDFS应用程序需要一次写入,多次读取一个文件的访问模式支持追加(append)操作,但无法更改已写入数据顺序的数据流访问HDFS适合用于处理批量数据,而不适合用于随机定位访问侧重高吞吐量的数据访问,可以容忍数据访问的高延迟为把“计算”移动到“数据”提供基础和便利452024/8/21HDFS的特点(1)简单一致性(2)故障检测和自动恢复(3)流式数据访问(4)支持超大文件(5)优化的读取(6)数据完整性462024/8/21HDFS架构HDFS是典型的主从架构,一个主节点(NameNode或者MetadataNode),负责系统命名空间(NameSpace)的管理、客户端文件操作的控制和存储任务的管理分配;多个从节点或者说是数据节点(DataNode),提供真实文件数据的物理支持。HDFS架构块元数据NameNodeDataNode客户端块(Block)在传统的块存储介质中,块是读写的最小数据单位(扇区)传统文件系统基于存储块进行操作为了节省文件分配表空间,会对物理存储块进行整合,一般大小为4096字节HDFS也使用了块的概念,但是默认大小设为64M字节可针对每个文件配置,由客户端指定每个块有一个自己的全局IDHDFS将一个文件分为一个或数个块来存储每个块是一个独立的存储单位以块为单位在集群服务器上分配存储与传统文件系统不同的是,如果实际数据没有达到块大小,则并不实际占用磁盘空间如果一个文件是200M,则它会被分为4个块:64+64+64+8492024/8/21使用块的好处当一个文件大于集群中任意一个磁盘的时候,文件系统可以充分利用集群中所有的磁盘管理块使底层的存储子系统相对简单块更加适合备份,从而为容错和高可用性的实现带来方便502024/8/21块的冗余备份每个块在集群上会存储多份(replica)默认复制份数为3可针对每个文件配置,由客户端指定可动态修改某个块的所有备份都是同一个ID系统无需记录“哪些块其实是同一份数据”系统可以根据机架的配置自动分配备份位置第一份在集群的某个机架的某台机器上其他两份在另外的一个机架的两台机器上此策略是性能与冗余性的平衡机架信息需要手工配置512024/8/21HDFS的元数据元数据包括文件系统目录树信息
文件名,目录名
文件和目录的从属关系
文件和目录的大小,创建及最后访问时间
权限文件和块的对应关系
文件由哪些块组成块的存放位置机器名,块IDHDFS对元数据和实际数据采取分别存储的方法元数据存储在一台指定的服务器上(NameNode)实际数据储存在集群的其他机器的本地文件系统中(DataNode)2024/8/2152NameNodeNameNode是用来管理文件系统命名空间的组件一个HDFS集群只有一台NameNode一个HDFS集群只有一个命名空间,一个根目录NameNode上存放了HDFS的元数据一个HDFS集群只有一份元数据目前有单点故障的问题元数据保存在NameNode的内存当中,以便快速查询1G内存大致可以存放1,000,000个块对应的元数据信息按缺省每块64M计算,大致对应64T实际数据2024/8/2153DataNode块的实际数据存放在DataNode上每个块会在本地文件系统产生两个文件,一个是实际的数据文件,另一个是块的附加信息文件,其中包括数据的校验和,生成时间DataNode通过心跳包(Heartbeat)与NameNode通讯客户端读取/写入数据的时候直接与DataNode通信2024/8/2154HDFS客户端需要访问HDFS文件服务的用户或应用命令行客户端同一个Hadoop安装包API客户端Java库非POSIX接口封装了通信细节2024/8/2155HDFS架构图2024/8/2156元数据的持久化NameNode里使用两个非常重要的本地文件来保存元数据信息:fsimagefsimage里保存了文件系统目录树信息fsimage里保存了文件和块的对应关系editsedits保存文件系统的更改记录(journal)当客户端对文件进行写操作(包括新建或移动)的时候,操作首先记入edits,成功后才会更改内存中的数据并不会立刻更改硬盘上的fsimage块的位置信息并不做持久化2024/8/2157元数据的载入和更新NameNode启动时通过fsimage读取元数据,载入内存执行edits中的记录,在内存中生成最新的元数据清空edits,保存最新的元数据到fsimage收集DataNode汇报的块的位置信息NameNode运行时
对文件创建和写操作,记录到edits更新内存中的元数据收集DataNode汇报的块的创建和复制信息2024/8/2158HDFS创建文件流程客户端客户端请求NameNode在命名空间中建立新的文件元信息如果不能创建文件则NameNode会返回失败文件已存在资源不足如创建成功,客户端得到此文件的写保护锁NameNodeNamenode检查集群和文件状态创建写保护锁来保证只有一个客户端在操作该文件建立该文件的元信息把创建文件这个事件加入edits为该文件分配块,以及块的冗余备份位置2024/8/2159HDFS写操作流程客户端写一个文件并不是直接写到HDFS上HDFS客户端接收用户数据,并把内容缓存在本地当本地缓存收集足够一个HDFS块大小的时候,客户端同NameNode通讯注册一个新的块注册块成功后,NameNode会给客户端返回一个DataNode的列表列表中是该块需要存放的位置,包括冗余备份客户端向列表中的第一个DataNode写入块当完成时,第一个DataNode向列表中的下个DataNode发送写操作,并把数据已收到的确认信息给客户端,同时发送确认信息给NameNode之后的DataNode重复之上的步骤当列表中所有DataNode都接收到数据并且由最后一个DataNode校验数据正确性完成后,返回确认信息给客户端收到所有DataNode的确认信息后,客户端删除本地缓存客户端继续发送下一个块,重复以上步骤当所有数据发送完成后,写操作完成2024/8/2160HDFS写操作流程图2024/8/2161HDFS的读操作流程客户端与NameNode通讯获取文件的块位置信息,其中包括了块的所有冗余备份的位置信息:DataNode的列表客户端获取文件位置信息后直接同有文件块的DataNode通讯,读取文件如果第一个DataNode无法连接,客户端将自动联系下一个DataNode如果块数据的校验值出错,则客户端需要向NameNode报告,并自动联系下一个DataNode2024/8/2162HDFS追加写(append)的操作流程客户端与NameNode通讯,获得文件的写保护锁及文件最后一个块的位置(DataNode列表)客户端挑选一个DataNode作为主写入节点,并对其余节点上的该数据块加锁开始写入数据与普通写入流程类似,依次更新各个DataNode上的数据更新时间戳和校验和最后一个块写满,并且所有备份块都完成写入后,向NameNode申请下一个数据块2024/8/2163客户端和HDFS服务器端配置文件的关系客户端的配置文件名与服务器端相同,字段名也相同客户端不会从HDFS集群端同步配置文件客户端只使用部分配置信息dfs.block.sizedfs.replication如果客户端没有配置信息,则使用客户端Hadoop程序包里的缺省值而不是服务器端的值2024/8/2164HDFS的安全性和用户认证缺省情况下,Hadoop不启用认证采用客户端系统的登录用户名或可以通过API设置从而,虽然HDFS有权限控制,但并没有安全性可言可以在NameNode上启用用户认证目前只支持Kerberos可以与LDAP集成2024/8/2165SecondaryNameNode不是备份节点SecondaryNameNode的主要的工作是阶段性的合并fsimage和edits文件,以此来控制edits的文件大小在合理的范围为了缩短集群重启时NameNode重建fsimage的时间在NameNode硬盘损坏的情况下,SecondaryNameNode也可用作数据恢复,但绝不是全部一般情况下SecondaryNamenode运行在不同与NameNode的主机上,并且它的内存需求和NameNode是一样的一个特殊的角色:SecondaryNameNode662024/8/21SecondaryNameNode的运行过程SecondaryNameNode根据配置好的策略决定多久做一次合并fs.checkpoint.period和fs.checkpoint.size通知NameNode现在需要回滚edits日志,此时NameNode的新操作将写入新的edits文件SecondaryNameNode通过HTTP从NameNode取得fsimage和editsSecondaryNameNode将fsimage载入内存,执行所有edits中的操作,新建新的完整的fsimageSecondaryNameNode将新的fsimage传回NameNodeNameNode替换为新的fsimage并且记录此checkpoint的时间2024/8/2167NameNode与SecondaryNameNode2024/8/2168HDFS服务进程NameNodeSecondaryNameNodeDataNode使用jps查看HDFS服务进程24913NameNode16566SecondaryNameNode15744DataNode2024/8/2169HDFS的未来发展高可用性多NameNode自治目前已在2.0版本中但还不够成熟,在生产环境使用前需要多做测试2024/8/2170HDFS中所有对文件的操作都需要先通过NameNode,如果NameNode出现问题,这个集群将不可用维护硬件失效软件失效操作失误解决方案:为NameNode提供备份节点HDFS高可用性712024/8/21HDFS高可用性的实现方式2024/8/2172HDFS高可用性实现细节把元数据信息存在第三方地点只需保存fsimage和editsActiveNN和StandbyNN通过开源组件ZooKeeper来决定主从StandbyNN从第三方地点实时读取edits当ActiveNN失败,切换到StandbyNN时,StandbyNN需要确保读取完所有edits之后才能对外提供服务块位置信息Datanode同时汇报给两个NameNode客户端需要知道有两个NameNode存在如果ActiveNamenode失效,客户端可以自动的将操作发往Standby节点2024/8/2173NameNode的自治(Federation)NameNode的瓶颈内存客户端的并发访问解决方案拆分目录树共享DataNode资源池2024/8/2174普通NameNode的架构层次2024/8/2175NameNode自治的实现方式2024/8/2176HDFS命令行工具HDFS安全模式启动、停止HDFS服务如何查看HDFS日志如何查看HDFSWeb控制台HDFS参数配置HDFS实战772024/8/21HDFS命令行工具HadoopFilesystemshell$HADOOP_HOME_BASE/bin/hadoopfs<args>FSshell使用URIs地址Schema://autority/path例如hdfs://namenodehost:port/folder1/folder2file:///home/tcloud/child如果不指定schema,则使用配置文件中的默认地址可以使用hadoopfs–help查看所有命令2024/8/2178cat用途显示一个或多个文件内容到控制台使用方法hadoopfs-catURI[URI...]例子:hadoopfs-cathdfs://host1:port1/file1hdfs://host2:port2/file2hadoopfs-catfile:///file3/user/hadoop/file42024/8/2179put/copyFromLocal用途将本地一个或多个文件导入HDFS以上两个命令唯一的不同时copyFromLocal的源只能是本地文件,而put可以读取stdin的数据使用方法hadoopfs-put/copyFromLocal<localsrc>URI例子:hadoopfs-putlocalfile.txt/user/hadoop/hadoopfile.txthadoopfs-putlocalfile1localfile2/user/hadoop/hadoopdirhadoopfs-putlocalfilehdfs://host:port/hadoop/hadoopfilehadoopfs-put-hdfs://host:port/hadoop/hadoopfilefromstdin2024/8/2180get/copyToLocal用途将HDFS中的一个或多个文件导出到本地文件系统使用方法hadoopfs-get/copyToLocal[-ignorecrc][-crc]URI<localsrc>例子:hadoopfs-get/user/hadoop/hadoopfilelocalfilehadoopfs-gethdfs://host:port/user/hadoop/filelocalfile2024/8/2181ls/lsr用途列出文件夹目录信息lsr递归显示文件子目录使用方法hadoopfs-ls/lsrURI例子:[hadoop@master]$hadoopfs-ls/user/hadoopdrwxr-xr-x-hadoopsupergroup02012-05-1417:24/user/hadoop/a[hadoop@master]$hadoopfs-lsr/user/hadoopdrwxr-xr-x-hadoopsupergroup02012-05-1417:24/user/hadoop/a-rw-r--r--2hadoopsupergroup472012-05-1417:24/user/hadoop/a/oct.sh-rw-r--r--2hadoopsupergroup62012-05-1417:24/user/hadoop/a/x.sh2024/8/2182fsck用法hadoopfsck[GENERIC_OPTIONS]<path>[-move|-delete|-openforwrite][-files[-blocks[-locations|-racks]]]检查dfs的文件的健康状况只能运行在master上[hadoop@master]$hadoopfsck/user/hadoopFSCKstartedbyhadoopfrom/7forpath/user/hadoopatFriJun1517:11:50CST2012./user/hadoop/a/oct.sh:Underreplicatedblk_-3537883739360629007_1303.TargetReplicasis2butfound1replica(s)../user/hadoop/a/x.sh:Underreplicatedblk_8664072905926163771_1304.TargetReplicasis2butfound1replica(s).2024/8/2183fsckStatus:HEALTHYTotalsize:57697BTotaldirs:5Totalfiles:6Totalblocks(validated):5(avg.blocksize11539B)Minimallyreplicatedblocks:5(100.0%)Over-replicatedblocks:0(0.0%)Under-replicatedblocks:5(100.0%)Mis-replicatedblocks:0(0.0%)Defaultreplicationfactor:2Averageblockreplication:1.0Corruptblocks:0Missingreplicas:2(100.0%)Numberofdata-nodes:1Numberofracks:1FSCKendedatFriJun1517:11:50CST2012in3milliseconds2024/8/2184dfsadmin用法hadoopdfsadmin[command]hadoopdfsadmin-help可以列出所有的可用命令主要的有一下几个-safemode安全模式操作-report报告集群DFS的运行情况可以使用hadoopdfsadmin-help查看所有命令的用法2024/8/2185HDFS的SafeMode指文件系统所处的一种只读的安全模式HDFS启动时会在safemode状态相关命令:$hadoopdfsadmin-safemodeget#安全模式当前状态信息$hadoopdfsadmin-safemodeenter#进入安全模式$hadoopdfsadmin-safemodeleave#解除安全模式$hadoopdfsadmin-safemodewait#挂起,直到安全模式结束2024/8/2186HDFS服务启动NameNode$HADOOP_HOME_BASE/bin/hadoop-daemon.shstartnamenodeSecondaryNameNode$HADOOP_HOME_BASE/bin/hadoop-daemon.shstartsecondarynamenodeDataNode同时启动:$HADOOP_HOME_BASE/bin/hadoop-daemons.shstartdatanode单台启动:$HADOOP_HOME_BASE/bin/hadoop-daemon.shstartdatanodeNameNode、SecondaryNameNode、DataNode$HADOOP_HOME_BASE/bin/start-dfs.sh2024/8/2187HDFS服务关闭NameNode$HADOOP_HOME_BASE/bin/hadoop-daemon.shstopnamenodeSecondaryNameNode$HADOOP_HOME_BASE/bin/hadoop-daemon.shstopsecondarynamenodeDataNode同时关闭:$HADOOP_HOME_BASE/bin/hadoop-daemons.shstopdatanode单台关闭:$HADOOP_HOME_BASE/bin/hadoop-daemon.shstopdatanodeNameNode、SecondaryNameNode、DataNode$HADOOP_HOME_BASE/bin/stop-dfs.sh2024/8/2188如何查看HDFS日志NameNode位置:$HADOOP_HOME_BASE/logs/hadoop-$USER-namenode-$HOSTNAME.log命令:tail-fn100$HADOOP_HOME_BASE/logs/hadoop-$USER-namenode-$HOSTNAME.logDataNode位置:$HADOOP_HOME_BASE/logs/hadoop-$USER-datanode-$HOSTNAME.log命令:tail-fn100$HADOOP_HOME_BASE/logs/hadoop-$USER-datanode-$HOSTNAME.log设置Log文件
的大小和数量修改core-site.xml中的参数hadoop.logfile.sizehadoop.logfile.count2024/8/2189如何设置日志级别
查看不同组件的日志级别hadoopdaemonlog-getlevelhost:portpackageName设置组件的日志级别
hadoopdaemonlog–setlevlehost:portpackageNamelevel“level”DEBUG,INFO,ERROR,FATAL
端口为前台页面的端口,缺省为50070组件名称(packageName)node.NameNodeorg.apache.hadoop.hdfs.server.datanode.DataNodeorg.apache.hadoop.hdfsorg.apache.hadoop2024/8/2190如何查看HDFSWeb控制台访问:http://<NameNodehostname>:<port>2024/8/2191HDFShdfs-site.xml参数配置.dir NameNode元数据存放位置默认值:使用core-site.xml中的hadoop.tmp.dir/dfs/namedfs.block.size对于新文件切分的大小,单位byte。默认是64M,建议是128M。每一个节点都要指定,包括客户端。默认值:67108864dfs.data.dirDataNode在本地磁盘存放block的位置,可以是以逗号分隔的目录列表,DataNode循环向磁盘中写入数据,每个DataNode可单独指定与其它DataNode不一样默认值:${hadoop.tmp.dir}/dfs/data2024/8/2192HDFShdfs-site.xml参数配置node.handler.countNameNode用来处理来自DataNode的RPC请求的线程数量建议设置为DataNode数量的10%,一般在10~200个之间如设置太小,DataNode在传输数据的时候日志中会报告“connectonrefused"信息在NameNode上设定默认值:10dfs.datanode.handler.countDataNode用来连接NameNode的RPC请求的线程数量取决于系统的繁忙程度设置太小会导致性能下降甚至报错在DataNode上设定默认值:3dfs.datanode.max.xcieversDataNode可以同时处理的数据传输连接数默认值:256建议值:40962024/8/2193HDFShdfs-site.xml参数配置dfs.permissions
如果是true则检查权限,否则不检查(每一个人都可以存取文件)于NameNode上设定默认值:truedfs.datanode.du.reserved 在每个卷上面HDFS不能使用的空间大小在每个DataNode上面设定默认值:0建议为10737418240,即10G。需要结合MapReduce场景设置。dfs.datanode.failed.volumes.toleratedDataNode可以容忍损块的磁盘数量,超过这个数量DataNode将会离线,所有在这个节点上面的block将会被重新复制默认是0,但是在有多块磁盘的时候一般会增大这个值dfs.replication在文件被写入的时候,每一块将要被复制多少份默认是3份。建议3份在客户端上设定通常也需要在DataNode上设定2024/8/2194HDFS
core-site.xml参数配置文件系统的名字。通常是NameNode的hostname与port需要在每一个需要访问集群的机器上指定,包括集群中的节点例如:hdfs://<your_namenode>:9000/fs.checkpoint.dir以逗号分隔的文件夹列表,SecondNameNode用来存储checkpointimage文件如果多于一个文件夹,那么都会被写入数据需要在SecondNameNode上设定默认值:${hadoop.tmp.dir}/dfs/namesecondaryhadoop.tmp.dir HDFS与本地磁盘的临时文件默认是/tmp/hadoop-${}.需要在所有的节点中设定2024/8/2195HDFS
core-site.xml参数配置erval当一个文件被删掉后,它会被放到用户目录的.Trash目录下,而不是立即删掉经过此参数设置的分钟数之后,再删掉数据默认是0,禁用此功能,建议1440(一天)io.file.buffer.size设定在读写数据时的缓存大小,应该为硬件分页大小的2倍默认是4096,建议为65536(64K)2024/8/2196Eclipse开发环境介绍HDFS开发基本步骤HDFSJavaAPI详解ConfigurationPathFileSystemStream、IOUtilsHDFSJavaAPI使用场景示例FuseHDFSWebHDFSRESTfulAPIHDFS-javaapi
使用972024/8/21
HDFS开发基本步骤实例化Configuration实例化FileSystem根据配置文件选择使用本地或分布式文件系统文件或目录操作Stream2024/8/2198Eclipse开发环境
菜单栏
按钮栏
包导航区代码编辑区
视图切换按钮相关关联显示区
代码联动显示区2024/8/2199Eclipse开发环境
2024/8/21100Eclipse开发环境填写项目名称2024/8/21101Eclipse开发环境2024/8/21102Eclipse开发环境建立第三方库依赖文件夹-lib2024/8/21103Eclipse开发环境
拷贝项目所依赖的第三方类库到lib文件夹2024/8/21104Eclipse开发环境把第三方类库加到项目中的CLASSPATH下2024/8/21105Eclipse开发环境
可以看到刚加到CLASSPATH下的把第三方类库2024/8/21106Eclipse开发环境
把src源代码目录删除,根据类别建立源代码及测试代码目录src/main/javajava源文件存放处src/main/resources配置文件存放处,如hadoop配置文件(core-site.xml)src/test/javajava测试代码存放处src/test/resources测试代码配置文件存放处
2024/8/21107Eclipse开发环境
新建Java类,可以使用HadoopAPI了2024/8/21108Eclipse开发环境在此编辑你的代码2024/8/21109Eclipse开发环境选择[File]=>Export,导出项目为一个jar包2024/8/21110Configuration包org.apache.hadoop.conf构造方法publicConfiguration()调用构造方法Configuration(true)publicConfiguration(booleanloadDefaults)true:先加载缺省配置文件,再加载用户指定文件(addResource)core-default.xml,core-site.xml以及通过addDefaultResource添加的文件名false:不加载缺省配置文件,需要通过addResource手动添加后加载的配置会覆盖先加载的配置除了被指定为final的publicConfiguration(Configurationother)复制other参数信息2024/8/21111Configuration加载配置文件方法staticvoidaddDefaultResource(Stringname)添加默认配置文件,配置文件加载的顺序是根据添加的顺序参数是文件名,文件是在classpath中voidaddResource(InputStreamin)voidaddResource(Pathfile)本地文件voidaddResource(Stringname)classpath中的文件voidaddResource(URLurl)2024/8/21112配置文件加载顺序先加载缺省配置文件,再加载用户定义的配置文件对于每一个文件只加载一次:第一个在classpath出现的classpath的目录顺序$HADOOP_CONF_DIR$JAVA_HOME/lib/tools.jar如果$HADOOP_HOME目录下有build目录,则添加build下各子目录$HADOOP_HOME/hadoop-core-*.jar$HADOOP_HOME/lib/*.jar用户在hadoop-env.sh中定义的$HADOOP_CLASS_PATH当前作为hadoopjar…参数提交的JAR包2024/8/21113Configuration设置/获取参数方法voidset(Stringname,Stringvalue)voidsetBoolean(Stringname,booleanvalue)voidsetInt(Stringname,Stringvalue)voidsetLong(Stringname,longvalue)voidsetFloat(Stringname,floatvalue)voidsetIfUnset(Stringname,Stringvalue)voidsetBooleanIfUnset(Stringname,booleanvalue)Stringget(Stringname)booleangetBoolean(Stringname,booleandefaultValue)2024/8/21114Path包org.apache.hadoop.fs构造方法publicPath(StringpathString)publicPath(URIaUri)publicPath(Pathparent,Pathchild)publicPath(Stringparent,Stringchild)参数parent指定父目录,参数child指定父目录下的文件或子目录publicPath(Stringscheme,Stringauthority,Stringpath)scheme:协议类型,譬如hdfs、file、s3authority:认证信息,譬如user:pwd@host:portpath:文件或目录名如参数不符合RFC2396,则抛出异常2024/8/21115Path常用方法intdepth()返回路径的深度StringgetName()返回路径上最后的资源名称PathgetParent()返回父目录,如果已是根目录则返回nullPathsuffix(Stringsuffix)参数suffix给Path增加后缀返回加完后缀的Path实例getFileSystem(Configurationconf)返回该Path所属的文件系统实例2024/8/21116FileSystem包org.apache.hadoop.fs构造方法protectedFileSystem()FileSystem是一个抽象类,不能通过new来创建通过静态get(Configurationconf)方法获得FileSystem子类的实例fs.$scheme.implorg.apache.hadoop.hdfs.DistributedFileSystem主要子类LocalFileSystem本地文件系统DistributedFileSystem分布式文件系统2024/8/21117创建文件booleancreateNewFile(Pathf)不会覆盖已有文件创建成功返回true,失败返回falseFSDataOutputStreamcreate(Pathf)覆盖已有文件创建文件并返回输出流FSDataOutputStreamcreate(Pathf,booleanoverwrite)创建文件并返回输出流FSDataOutputStreamcreate(Pathf,booleanoverwrite,intbuffer)FSDataOutputStreamcreate(Pathf,booleanoverwrite,int buffer,shortreplication,longblockSize)2024/8/21118打开文件FSDataInputStreamopen(Pathf)FSDataInputStreamopen(Pathf,intbufferSize)返回输入流如果文件不存在会抛出异常不指定bufferSize时,会从Configuration中读取io.file.buffer.size,默认为4096字节2024/8/21119文件追加FSDataOutputStreamappend(Pathf)FSDataOutputStreamappend(Pathf,intbufferSize)块不足64M时,会补足到64M块达到64M之前,该块不可见,ls看不到该块新增的大小,也无法读取不能同时多个writer追加同一个文件2024/8/21120从本地拷贝文件到HDFSvoidcopyFromLocalFile(Pathsrc,Pathdst)目标文件存在,直接覆盖voidcopyFromLocalFile(booleandelsrc,Pathsrc,Pathdst)根据参数delsrc,如果是true,拷贝完成之后直接删除源文件voidcopyFromLocalFile(booleandelsrc,booleanoverwrite, Pathsrc,Pathdst)voidcopyFromLocalFile(booleandelsrc,booleanoverwrite, Path[]srcs,Pathdst)参数srcs指定多个本地文件或文件夹参数dst指定HDFS文件夹voidmoveFromLocalFile(Pathsrc,Pathdst)voidmoveFromLocalFile(Path[]srcs,Pathdst)2024/8/21121从HDFS拷贝文件到本地voidcopyToLocalFile(Pathsrc,Pathdst)voidcopyToLocalFile(booleandelsrc,Pathsrc,Pathdst)voidmoveToLocalFile(Pathsrc,Pathdst)没有多文件拷贝函数会覆盖已存在的本地文件dst2024/8/21122
创建目录booleanmkdirs(Pathf)booleanmkdirs(Pathf,FsPermissionpermission)staticbooleanmkdirs(FileSystemfs,Pathdir,FsPermissionpermission)支持多级目录同时创建(类似mkdir-p)默认权限是755成功返回true目录权限的含义r+x:
获取文件列表w:创建(删除)文件/子目录
2024/8/21123删除及重命名booleandelete(Pathf,booleanrecursive)删除文件或目录如果f是目录,则参数recursive指定是否要递归删除recursive是false,并且f不为空,会抛出异常删除成功返回truef不存在时,会返回falsebooleandeleteOnExit(f)当关闭FileSystem时,才会删除如f是目录,则递归删除子目录和文件booleanrename(Pathsrc,Pathdst)2024/8/21124获取文件或目录信息FileStatus[]listStatus(Pathf)FileStatus[]listStatus(Path[]dirs)FileStatus[]listStatus(Pathf,PathFilterfilter)FileStatus[]listStatus(Path[]dir,PathFilterfilter)列出文件或目录的信息参数dir指定要查询的多个目录参数filter指定需要过滤规则PathFilter是一个接口,需要实现booleanaccept(Pathpath)方法,返回false,在返回结果中会过滤掉只返回列出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学习贯彻党的XX届一中全会精神模板
- 二零二五年度产权置换简易房屋买卖合同3篇
- 研发部门年终总结
- 二零二五年度房地产开发项目合伙人股权入股合同范本9篇
- 基于结构化主题的单元整体教学-以小学数学学科为例
- 二零二五年度房产抵押贷款合同范本一(房屋抵押借款合同模板)15篇
- 四川省绵阳市江油市2024-2025学年八年级上学期期末教学质量监测道德与法治试题(含答案)
- 陕西省宝鸡市凤翔区2024-2025学年八年级上学期期末质量检测道德与法治试卷(含答案)
- 白岭矿硐提升改造及萤石精粉浮选项目可行性研究报告模板-立项备案
- 湖南省常德市高中学校联盟2024-2025学年高一上学期期末质量检测地理试题( 含答案)
- 银行资产保全员工年度工作总结
- 钢结构网架验收施工质量自评报告-副本
- 《修心三不 不生气 不计较 不抱怨》读书笔记思维导图
- 妊娠剧吐的护理查房
- GB/T 5023.5-2008额定电压450/750 V及以下聚氯乙烯绝缘电缆第5部分:软电缆(软线)
- GB/T 36127-2018玉雕制品工艺质量评价
- GB/T 23445-2009聚合物水泥防水涂料
- 漆画漆艺 第三章
- (完整版)100道凑十法练习题
- 光伏逆变器一课件
- 2023年上海师范大学辅导员招聘考试笔试题库及答案解析
评论
0/150
提交评论