1、hadoop3(听说比spark快10倍),基于jdk1.8以上,至少3台机器
更加支持spark,
增加classpath isolation 防止一些不同的jar包版本
支持hdfs的擦除编码
DataNode 存储数据添加负载均衡
MapReduce优化
2、hadoop --- hdfs架构
NameNode DataNode secondaryNameNode 主要三种节点,不建议NN 和SNN在一台机器上,防止磁盘IO
(1)NameNode(NN)节点
上传下载文件都需要请求这个节点(提供客户端的上传下载功能)
存放元数据(metadata除了文件名,内容以外的所有东西都是元数据,比如大小,文件格式等等) ,在集群中只能有一个在工作
(2)DataNode (DN)节点
存储内容的节点
怎么存?切成数据块(block),均匀存放在DataNode上
每个块都有三个副本(防止数据丢失),不允许一台机器出现block 的ID,所以三个副本在三个机器
(3)SecondaryNameNode(SNN)节点
元数据存放在内存中的(并不稳定,关机即丢失),所以一段时间持久化一次,将数据写入磁盘中(fsimage(磁盘文件名),edit(操作日志 增删改的操作)---实时持久化),
不存放数据,SNN是合并元数据的作用,使内存中的数据保存稳定
根据edit来更新fsimage(3600s(1小时) 间隔)
集群启动时候,首先更新一次fsimage,运行时一小时更新一次
3、启动条件
启动一个节点,访问另外一个节点,配置主机名,vim /etc/sysconfig/network
配置hosts映射文件 vim /etc/hosts
以一台机器为中心,设置到其他机器免密码ssh
(1)创建秘钥
ssh -keygen
cd .ssh/
id_rsa私钥 id_rsa.pub公钥
将公钥copy到其他机器中 ssh-copy-id -i ./id_rsa.pub root@node1
(2)官网下载hadoop http://hadoop.apache.org/
tar -xvf hadoop....
(3)在/etc/hadoop下配置hadoop-env.sh文件
(4)NameNode配置,在core-site.xml中添加
(5)SecondaryDataNode配置,在hdfs-site.xml中添加
(6)DataNode配置 ,在worker.xml中配置,直接写域名即可
(7)将hadoop copy上其他机器中
4、启动hdfs
(1)格式化(第一次安装的时候)
(2)启动
查看进程
5、高可用(HA)的hdfs的集群原理(避免一个机器死亡)
在高可用的集群中,不需要SSN节点,由NN节点替代,NameNode节点有两种状态:active,standby,由standby替代
由FailoverController(ZKFC)监控,控制NN的状态转变,当NN节点的active死亡时,standby替换
edits文件最好保存在JournalNode(JN)集群上
有多少个NameNode就有多少ZKFC,DN与NN一直保持通信
问题:如何保持两个状态的NameNode的fsimage保持一样呢?
创建fsimage要保持一致,直接copy到其他NameNode上