HDFS的集群扩容,减容 [了解]
热扩容,减容
- 减容
1. 创建一个新的文件 位置 名字 随便host.exclusionhadoop22. 配置 hdfs-site.xmldfs.hosts.exclude 文件的位置 (不加 file://)<property> <name>dfs.hosts.exclude</name> <value>/opt/install/hadoop-2.5.2/host.exclusion</value></property>3. 通过命令刷新集群bin/hdfs dfsadmin -refreshNodes4. 把删除的节点 从slaves 删除5. 把hdfs-site.xmldfs.hosts.exclude 的信息删除6. kill 掉 被删除的DataNode
- 扩容
# ,如果新节点克隆主节点,则删除新节点下面的 data文件夹中的数据,否则主节点和新节点只可显示一个1. 保证新加的机器 (hosts配置 域名设置 iptables selinux关闭 配置主机到从机 SSH免密码登陆 hadoop安装(core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml))2. 启动新机器的datanodesbin/hadoop-daemon.sh start datanode3. 平衡处理sbin/start-balancer.sh,为了数据散列均匀4. 修改集群中所有的slave配置文件 把新加入的节点配置进去
HA(高可用)的HDFS集群
- 准备集群中三个节点
防火墙,selinux,ip,host,主机名,jdk,sshzk ssh 中间节点 操作 所有节点
- 安装zk集群(奇数个节点)
1. 上传zookeeper-3.4.5.tar.gz,并解压缩2. zookeeper安装目录下创建一个data文件夹 /opt/install/zookeeper-3.4.5/data3. 修改zookeeper的配置文件 zoo_sample.cfg 改名成zoo.cfg dataDir=/opt/install/zookeeper-3.4.5/data server.1=hadoop:2888:3888 server.2=hadoop1:2888:3888 server.3=hadoop2:2888:38884. dataDir所对应的路径下创建myid文件 并分别设置 1,2,35. 集群同步 scp -r zookeeper-3.4.5/ [email protected]:/opt/install/6. zookeeper_home/bin/zkServer.sh start|stop|status zookeeper_home/bin/zkCli.sh
- 安装Hadoop
1. 解压缩 释放hadoop的安装包2. 配置文件 同步全集群 hadoop-env.sh core-site.xml <property> <name>fs.defaultFS</name> <value>hdfs://ns1/</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/opt/install/hadoop-2.5.2/data/tmp</value> </property> <property> <name>ha.zookeeper.quorum</name> <value>hadoop:2181,hadoop1:2181,hadoop2:2181</value> </property> hdfs-site.xml <!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 --> <property> <name>dfs.nameservices</name> <value>ns1</value> </property> <property> <name>dfs.ha.namenodes.ns1</name> <value>nn1,nn2</value> </property> <!-- nn1的RPC通信地址 --> <property> <name>dfs.namenode.rpc-address.ns1.nn1</name> <value>hadoop:8020</value> </property> <!-- nn1的http通信地址 --> <property> <name>dfs.namenode.http-address.ns1.nn1</name> <value>hadoop:50070</value> </property> <!-- nn2的RPC通信地址 --> <property> <name>dfs.namenode.rpc-address.ns1.nn2</name> <value>hadoop1:8020</value> </property> <!-- nn2的http通信地址 --> <property> <name>dfs.namenode.http-address.ns1.nn2</name> <value>hadoop1:50070</value> </property> <!-- 指定NameNode的元数据在JournalNode上的存放位置 --> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://hadoop:8485;hadoop1:8485;hadoop2:8485/ns1</value> </property> <!-- 指定JournalNode在本地磁盘存放数据的位置 --> <property> <name>dfs.journalnode.edits.dir</name> <value>/opt/install/hadoop-2.5.2/journaldata</value> </property> <!-- 开启NameNode失败自动切换 --> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property> <!-- 配置失败自动切换实现方式 --> <property> <name>dfs.client.failover.proxy.provider.ns1</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行--> <property> <name>dfs.ha.fencing.methods</name> <value> sshfence shell(/bin/true) </value> </property> <!-- 使用sshfence隔离机制时需要ssh免登陆 --> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/root/.ssh/id_rsa</value> </property> <!-- 配置sshfence隔离机制超时时间 --> <property> <name>dfs.ha.fencing.ssh.connect-timeout</name> <value>30000</value> </property>? mapred-site.xml[一致] yarn-site.xml[一致] slaves[一致]3. 启动zk , journalnode sbin/hadoop-daemon.sh start journalnode 3. 格式化 bin/hdfs namenode -format scp -r data/tmp/* [email protected]:/opt/install/hadoop-2.5.2/data/tmp4. 启动 bin/hdfs zkfc -formatZK [第一次] sbin/start-dfs.sh
- Java代码
Configuration configuration = new Configuration(); configuration.set("fs.defaultFS","hdfs://ns1/");? FileSystem fileSystem = FileSystem.get(configuration);
原文地址:https://www.cnblogs.com/lhc-hhh/p/10324287.html
时间: 2025-01-16 03:58:26