hadoop入门学习笔记
- 格式:docx
- 大小:32.04 KB
- 文档页数:14
一. Hadoop简介
1.1hadoop概述
课程总括:
1.掌握hadoop基本知识,进行hadoop的HDFS和MapReduce应用开发,搭建Hadoop集群
2.掌握Hbase基本知识,搭建Hbase集群,Hbase基本操作
3.
Hadoop是什么?
适合大数据的分布式存储和计算平台.
分布式存储:数据分散存储在堕胎计算机上,但对于用户感受不到(通透性)
分布式计算:负载均衡,请求分发机制,跨操作系统.
1.2hadoop体系结构
Hadoop核心项目
1. HDFS:(Hadoop Distributed File System)分布式文件系统(用户只管上传,而不用知道怎么存)
2. MapReduce:并行计算框架
HDFS的架构
主从结构:
1. 主节点,只有一个namenode,负责:
①接受用户操作请求,是用户操作的入口
②维护文件系统的目录结构,陈祚命名空间
2. 从节点:有很多datanode,负责
①存储文件
MapReduce的架构
主从结构:
1. 主节点:只有一个JobTracker,负责
①接收客户提交的计算任务
②监控TaskTracker的执行
③,把计算任务分配给TaskTracker执行,即任务调度
2. .从节点:有很多个TaskTracker
执行JobTracker分配的计算任务
HDFS中namenode,datanode于MapReduce中JobTracker和TaskTracker的区别
1. HDFS是负责数据存储的,MapReduce是负责任务分发与处理的
2. Namenode和jobTracker一般不配置在同一节点上.因为namenode是负责对外请求处理,而Jobtracker是对内任务分发的,应分开以保证系统安全性
3. Datanode与taskTracker一般配置在同一节点上,因为TaskTracker只处理本地数据
4. Datanode与TaskTracker不在同一节点时,TaskTracker处理的数据来源于其他文件系统
5. 用户进行存储是,与datanode直接打交道,namenode只是为用户提供block id,并记录
6. 数据切歌存储是,一条数据存放在同一datanode上,否则数据作废
1.3搭建Hadoop集群环境
Hadoop部署方式
1. 本地模式
2. 伪分布模式:在同一节点上运行hadoop的各个进程
3. 集群模式:Hadoop的各个进程运行在集群的很多节点上
二. 初识hadoop
2.1 HDFS的shell操作
课程总括:
1.分布式文件系统与HDFS
2.HDFS体系结构与基本概念
3.HDFS的shell操作
4.java常用接口及api
HDFS的特点
1. 对用户访问透明的文件系统,数据存放在许多节点上
2. 适用于一次写入多次查询的情况,不支持并发写,不适合小文件
3. HDFS中有一层体系结构,把外部客户端看到的文件系统逻辑结构与真正数据存储的物理结构,解耦了
HDFS的shell操作
1. hadoop fs –ls hdfs://nn1:22/
查看nn1节点下的目录和文件(仅显示此目录下的)
2. hadoop fs –lsr hdfs://nn1:22/
循环递归查看nn1节点下的所有目录和文件(包括子目录中的内容)
3. hadoop fs –mkdir hdfs://nn1:22/dir1
创建nn1节点根目录下的dir1目录
4. hadoop fs –touchz hdfs://nn1:22/dir1/file
在nn1节点的dir1目录下创建file空文件 5. hadopp fs –put hello hdfs://nn1:22/dir1
将本地的hello文件上传至nn1节点的dir1目录下(重复上传文件会报错)
6. hadoop fs –text hello hdfs://nn1:22/dir1/file
查看file文件中的内容
上传时若省略节点路径,系统会使用默认客户端的路径,默认客户端路径由core-site.xml中的的值确定
7. hadoop fs –get hdfs://nn1:22/dir/file
将file文件下载到本地
8. hadoop fs –rmr hdfs://nn1:22/dir1
删除文件或目录,删除目录时,目录下的文件也被删除
Namenode
1. 是整个文件系统的管理节点,他维护着整个文件系统的文件目录树,文件/目录的元信息和每个文件对应的数据块列表,接收用户的操作请求
2. 文件包括:
①Fsimage:元数据镜像文件,存储某一时段namenode内存元数据信息
②Edit:操作日志文件
③Fstime:保存最近一次checkpoint的时间
3. 以上这些文件是保存在linux文件系统中的
4. 文件上传时,namenode只负责管理,登记上传文件存储块,至于传输过程中,客户与datanode直接传输,不经过namenode
5. 文件上传时,namenode会将大文件切割成许多小文件来存储(一般64mb),提升了存储空间利用率,增强文件传输过程的安全性(传输时进程down掉时,只需重传64mb的文件,而不需重传全部).至于各小块存储位置和如何进行组装由HDFS封装了
注:fsimage是数据与数据块存放的映射表,是集群的关键,在hdfs-site.xml中配置.dir的值,将其改为由逗号隔开的多个目录列表(逗号为英文,前后无空格,切目录必须为已存在的目录),则fsimage将在每个路径下存放一遍.
Datanode
1. 提供真实数据的存储服务
2. 文件快:最基本的存储单位.对于文件内容而言,一个文件的长度大小是size,那么从文件的0偏移开始,按照固定的大小,顺序对文件进行划分并编号,划分好的每一个块成为一个block,HDFS默认Block大小为64MB,以一个256MB文件,共有256/64=4个block
3. 不同于普通文件系统的是,HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据存储空间
4. Replication,多副本,默认只有一个
注:1.默认快大小修改,在hdfs-defalut.xml中找到dfs.block.size,将其包含的property复制到hdfs-site.xml中,在修改其值,注意不要在源文件中修改
2.修改默认副本数,过程同上,找到dfs.replication
3.当文件大于64MB时,按64MB划分Block存储,剩余不足部分按实际大小占用block块存储
secondaryNameNode
1. HA的一个解决方案,但不支持热备,配置即可 2. 执行过程:从NameNode上下载数据信息(fsimage,edits),然后把两者合并,生成新的fsimage,在本地保存,并将其推送至NameNode,同时重置NameNode上的edits
3. 默认安装在NameNode节点上,但这样不安全
注,2.的详解:NameNode每隔1小时或edits满64Mb就触发合并,合并时,将数据传到secondaryNameNode时,因数据读写不能同步进行,此时NameNode产生一个新的日志文件edits.new用来存放这段时间的操作日志.SecondaryNameNode合并成fsimage后回传给NameNode替换掉原有fsimage,并将edits.new命名为edits.
补充说明:当NameNode当机时,通过secondaryNameNode恢复时,会丢失edits.new的映射表
本章经验总结:
1.搭建集群环境时,对于NameNode和JobTracker不在同一节点时,配置NameNode在chaoren1上,JobTracker在chaoren2上
(1)Node所在节点是通过配置文件core-site.xml的实现的.其值设为hdfs://chaoren1:9000;JobTracker所在节点是通过mapred-site.xml的mapred.job.tracker的值实现,其值设为hdfs://chaoren2:9001
2.把修改复制到集群的其他节点中
3.其同时,不要使用start-all.sh,而应该使用hadoop-daemon.sh start xxxx
1.2在chaoren1上执行命令hadoop-daemon.sh start jobtracker
在chaoren2上执行hadoop-daemon.sh start secondarynamenode
在chaoren2上执行hadoop-daemon.sh start datanode
在chaoren1上执行hadoop-daemon.sh start tasktracker
Node单点问题的解决
1.使用.dir的多目录保存数据
2.使用secondaryNameNode
3.使用第三方的avatanode
3.执行HDFS格式化时,NameNode创建自己的目录结构,datanode因为没有实际数据,对其不产生任何影响
4.HDFS shell
使用put命令上传文件时
1. 如果目的地是一个已经存在的文件夹时,新文件上传到文件夹内,文件名是原来的文件名
2. 如果目的地是一个已经存在的文件夹时,且源文件已经存在,再次上传报错
3. 如果目的地是一个不存在的路径时,新文件上传成功,文件名是目标路径名称
2.2HDFS的java操作
package hdfs;
import java.io.IOException;
import .URI;