HDFS 2.x
1.解决HDFS 1.0中单点故障和内存受限问题。
解决单点故障
HDFS HA:通过主备NameNode解决
如果主NameNode发生故障,则切换到备NameNode上
解决内存受限问题
HDFS Federation(联邦)
水平扩展,支持多个NameNode;
(2)每个NameNode分管一部分目录;
(1)所有NameNode共享所有DataNode存储资源
2.x仅是架构上发生了变化,使用方式不变
对HDFS使用者透明
HDFS 1.x中的命令和API仍可以使用
配置:
1.name serivce 到物理节点的映射,1对2的关系 2. journalnode相关位置信息的描述 3. 发生故障代理切换时的免秘钥配置
2.部署:
先启动Journalnode (123台 hadoop-daemon.sh start journalnode),再触发格式化hdfs ( hdfs namenode -format )。然后启动格式化过的主NN (hadoop-daemon start namenode),另一台同步信息(hdfs namenode -bootstrapStandby)。
3.自动化
1),开启zkfc
dfs.ha.automatic-failover.enabled
true
2) 告诉zkfc zookeeper在哪里 搭建zookeeper必须在zookeeper格式化之前
ha.zookeeper.quorum
zk1.example.com:2181,zk2.example.com:2181,zk3.example.com:2181
3) 格式化ZK,,不格式化 zookeeper启动有问题
$ hdfs zkfc -formatZK
4.zookeeper
tar -xf 解压安装 配置环境变量
更改配置文件:
1,zookeeper(配置)
conf/zoo.cfg(此文件是备份文件,源文件是 zoo_sample.cfg)
dataDir=/hadoop_data/zk 数据存放路径
server.1=192.168.111.52:2888:3888 两个端口号是为了保证分布式协调
server.2=192.168.111.53:2888:3888
server.3=192.168.111.54:2888:3888
/hadoop/zk
echo 1 > myid //数字根据节点规划 第二台用 2
启动 :zkServer.sh start
状态 :zkServer.sh status 启动的zookeeper过半才会有主从状态,启动过半时,ID最大的通常是leader,其他为从。
5.配置文件
node001和node002 互相免秘钥
拷贝hadoop为hadoopfull 。 hadoop做成HA的,hadoopfull是原来完全分布式的
HA模式没有SNN,由standby的NN替代
更改配置文件:
hdfs-site.xml:
逻辑名称 ,nameservice
dfs.nameservices
bjsxt
两个逻辑
dfs.ha.namenodes.bjsxt
nn1,nn2
到两个物理
dfs.namenode.rpc-address.bjsxt.nn1
node001:8020
dfs.namenode.rpc-address.bjsxt.nn2
node002:8020
逻辑到物理的映射
dfs.namenode.http-address.bjsxt.nn1
node001:50070
dfs.namenode.http-address.bjsxt.nn2
node002:50070
journalnodezz在哪 , 往哪写数据
dfs.namenode.shared.edits.dir
qjournal://node001:8485;node002:8485;node003:8485/mycluster
<property> 持久化数据存放的目录
<name>dfs.journalnode.edits.dir</name>
<value>/hadoop_data/ha/jn</value>
</property>
故障切换的实现和代理
dfs.client.failover.proxy.provider.mycluster
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
dfs.ha.fencing.methods
sshfence
dfs.ha.fencing.ssh.private-key-files
/root/.ssh/id_dsa 注意是 _dsa文件(有的是 _rsa)
HA自动化的故障转移 , 设为true 开启zkfc
dfs.ha.automatic-failover.enabled
true
core-site.xml
逻辑名称是入口,应该改为nameservice 即bjsxt,
fs.defaultFS
hdfs://bjsxt
hadoop.tmp.dir
/hadoop_data/ha
zklc会用到zookeeper,将定义过的zookeeper列表添加进来
ha.zookeeper.quorum
node002:2181,node003:2181,node004:2181
6.启动
先启动zookeeper(一定):zkServer.sh start
再启动集群。
7…难免有疏漏,其实看着官方教程就可以了,重要的是配置文件要注意,格式化时要注意。