1、hadoop是什么?
适合大数据的分布式存储与计算平台
2、hadoop版本有哪些?
①Apache:官方版本(1.1.2)
②Cloudera:使用下载最多的版本,稳定,有商业支持,在Apache的基础上打上了一些patch。推进使用。
③Yahoo:Yahoo内部使用的版本,发不过两次,已有的版本都放到Apache上,后续不再继续发布,在集中在Apache的版本上。
3、hadoop核心项目
①HDFS:Hadoop Distributed File System分布式文件系统
②MapReduce:并行计算框架
4、HDFS的架构
1). 主从结构
①主节点,只有一个:namenode
②从节点,有很多歌:datanodes
2). namenode负责
①接收用户请求
②维护文件系统的目录结构
③管理文件与block之间关系,block与datanode之间关系。
3). datanode负责
①存储文件
②文件被分成block存储在磁盘上
③为保证数据安全,文件会有多个副本
5、MapReduce的架构
1)、主从结构
①主节点,只有一个:JobTracker
②从节点,有很多个:TaskTrackers
2)、JobTracker负责
①接收客户提交的计算任务
②把计算任务分给TaskTrackers执行
③监控TaskTracker的执行情况
3)、TaskTracker负责
①执行JobTracker分配的计算任务
6、hadoop的特点
1). 扩容能力(Scalable):能可靠地存储和处理千兆字节(PB)数据
2). 成本低(Economical):可以通过普通机器这些服务器群总计可达数千个节点。组成服务器群来分发以及处理数据。
3). 高效率(Efficient):通过分发数据,hadoop可以在数据所在的节点上并行地处理他们,这使得处理速度非常的快速。
4). 可靠性(Reliable):hadoop能自动地维护数据的多份副本,并且能在任务计算失败后能自动地重新部署计算任务。
7、hadoop部署方式
1). 本地模式
2). 伪分布模式
搭建步骤:
①关闭防火墙
②设置IP
③设置主机名
④设置SSH免登陆模式
⑤主机名和IP绑定
⑥JDK安装与环境变量配置
⑦hadoop安装与环境变量配置
3). 集群模式
搭建步骤:
①确定集群环境
②在伪分布基础上搭建
③集群各节点之间必须ssh免密码登陆。ssh-copy-id -i slavenode
④删除hadoop中的tmp
⑤把JDK,hadoop负责到其他节点。scp -rq /etc/profile hadoop01:/etc/profile
⑥修改主节点的slaves文件
8、hadoop的目录
1. bin目录:存储一些启动和停止文件
2. conf目录:存放hadoop一些配置文件
……
9、如何运行jar包中的hadoop程序。
hadoop jar linux中jar包的路径 jar包主类(打jar的时候选择主类就可以不写) args0 args1 ….
1. 查看jar包里面的hadoop内置的程序:hadoop jar hadoop-examples-1.1.2.jar
2. 运行jar包里面的hadoop内置的程序:hadoop jar hadoop-examples-1.1.2.jar wordcount
注意:MR打包运行,与一般的运行的区别,类 extends Configured implements Tool;
job.setJarByClass(WordCountApp.class);//打包运行必须执行的秘密方法
10、HDFS的shell命令
1. 调用文件系统(FS)Shell命令应使用 bin/hadoop fs 的形式
2. 所有的FS shell命令使用URI路径作为参数。
3. 大多数FS Shell命令的行为和对应的Unix Shell命令类似。
-help [cmd] //显示命令的帮助信息
-ls(r) //显示当前目录下所有文件
-du(s) //显示目录中所有文件大小
-count[-q] //显示目录中文件数量
-mv //移动多个文件到目标目录
-cp //复制多个文件到目标目录
-rm(r) //删除文件(夹)
-put //本地文件复制到hdfs
-copyFromLocal //同put
-moveFromLocal //从本地文件移动到hdfs
-get [-ignoreCrc] //复制文件到本地,可以忽略crc校验
-getmerge //将源目录中的所有文件排序合并到一个文件中
-cat //在终端显示文件内容
-text //在终端显示文件内容
-copyToLocal [-ignoreCrc] //复制到本地
-moveToLocal
-mkdir //创建文件夹
-touchz //创建一个空文件
11、Namenode文件包过
1. fsimage:元数据镜像文件。储存某一时段NameNode内存元数据信息。
2. edits:操作日志文件
3. fstime:保存最近一次checkpoint的时间
注意:以上这些文件是保存在linux的文件系统中。
12、Datanode
1. 文件块(block):最基本的存储单位。HDFS默认Block大小是64MB。
2. 不同于普通文件系统的是,如果一个文件小于一个数据块的大小,并不占用整个数据库存储空间。
3. Replication:多副本,默认是三个。
13、SecondaryNameNode
1. HDFS的高可用性(HA)的一个解决方案。但不支持热备。配置即可。
2. 执行过程:从NameNode上下载元数据信息(fsimage,edits),然后把二者合并,生成新的fstime,
在本地保存,并将其推送到NameNode,同时重置NameNode的edits。
3. 默认安装在NameNode节点上,但这样…不安全!
14、HDFS的java访问接口——FileSystem
1. 写文件:create
2. 读取文件:open
3. 删除文件:delete
4. 创建目录:mkdirs
5. 删除文件或目录:delete
6. 列出目录的内容:listStatus
7. 显示文件系统的目录和文件的元数据信息:getFileStatus
15、RPC
1. 远程过程调用协议
2. RCP采取客户机/服务器模式。
3. hadoop的整个体系结构就是构建在RPC之上的。
————-问答开始—————
问题:
hdfs的组成部分有哪些,分别解释一下?
namenode,datanode
hdfs的高可靠如何实现?
具体实现,借助DRBD、HeartbeatHA实现主备切换。
使用DRBD实现两台物理机器之间块设备的同步,即通过网络实现Raid1,
辅以Heartbeat HA实现两台机器动态角色切换,对外(DataNode、DFSClient)使用虚IP来统一配置。
这种策略,可以很好地规避因为物理机器损坏造成的hdfs元数据丢失,
(这里的元数据简单地说,就是目录树,以及每个文件有哪些block组成以及它们之间的顺序),
但block与机器位置的对应关系仅会存储在NameNode的内存中,
需要DataNode定期向NameNode做block report来构建。
因此,在数据量较大的情况下,blockMap的重建过程也需要等待一段时间,对服务会有一定的影响。
hdfs的常用shell命令有哪些?
hdfs的常用java api有哪些?
请用shell命令实现目录、文件的增删改查?
请用java api实现目录、文件的增删改查?