熱擴容,減容
減容node
1. 建立一個新的文件 位置 名字 隨便
host.exclusion
hadoop2
2. 配置 hdfs-site.xml
dfs.hosts.exclude 文件的位置 (不加 file://)
<property>
<name>dfs.hosts.exclude</name>
<value>/opt/install/hadoop-2.5.2/host.exclusion</value>
</property>
3. 經過命令刷新集羣
bin/hdfs dfsadmin -refreshNodes
4. 把刪除的節點 從slaves 刪除
5. 把hdfs-site.xml
dfs.hosts.exclude 的信息刪除
6. kill 掉 被刪除的DataNode
擴容linux
# ,若是新節點克隆主節點,則刪除新節點下面的 data文件夾中的數據,不然主節點和新節點只可顯示一個
1. 保證新加的機器 (hosts配置 域名設置 iptables selinux關閉 配置主機到從機 SSH免密碼登錄 hadoop安裝(core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml))
2. 啓動新機器的datanode
sbin/hadoop-daemon.sh start datanode
3. 平衡處理sbin/start-balancer.sh,爲了數據散列均勻
4. 修改集羣中全部的slave配置文件 把新加入的節點配置進去
準備集羣中三個節點shell
防火牆,selinux,ip,host,主機名,jdk,ssh
zk ssh 中間節點 操做 全部節點
安裝zk集羣(奇數個節點)apache
1. 上傳zookeeper-3.4.5.tar.gz,並解壓縮
2. zookeeper安裝目錄下建立一個data文件夾 /opt/install/zookeeper-3.4.5/data
3. 修改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:3888
4. dataDir所對應的路徑下建立myid文件 並分別設置 1,2,3
5. 集羣同步 scp -r zookeeper-3.4.5/ root@hadoop1:/opt/install/
6. zookeeper_home/bin/zkServer.sh start|stop|status
zookeeper_home/bin/zkCli.sh
安裝Hadoopssh
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/* root@hadoop1:/opt/install/hadoop-2.5.2/data/tmp
4. 啓動
bin/hdfs zkfc -formatZK [第一次]
sbin/start-dfs.sh
Java代碼ide
Configuration configuration = new Configuration();
configuration.set("fs.defaultFS","hdfs://ns1/");
FileSystem fileSystem = FileSystem.get(configuration);