尽可能做到全自动配置,但是目前还需要一些手工参与。
1. background
10台vm
10.10.97.150 | namenode |
10.10.97.151 | jobtracker |
10.10.97.152~10.10.97.159 | datanode |
没有配置secondry namenode
2. idea
配置一台节点,然后同步所以节点。
使用3个脚本完成配置过程。
deploy.sh | 在单节点上部署Hadoop |
ssh-config.sh | 配置namenode/jobtracker和datanode的ssh通信 |
sync.sh | 将namenode的配置同步的到其它节点 |
还有一个脚本clear.sh用于清理配置错误。
3. Implementation
前期手动工作:
配置/etc/hosts:
10.10.97.150 gc01vm0
10.10.97.151 gc01vm1
10.10.97.152 gc01vm2
10.10.97.153 gc01vm3
10.10.97.154 gc01vm4
10.10.97.155 gc01vm5
10.10.97.156 gc01vm6
10.10.97.157 gc01vm7
10.10.97.158 gc01vm8
10.10.97.159 gc01vm9
配置hadoop-0.20.2/conf
core-site.xml
<configuration> <property> <name>fs.default.name</name> <value>hdfs://10.10.97.150:9000</value> </property> </configuration>
hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.name.dir</name> <value>/opt/hadoop/data/dfs.name.dir</value> </property> <property> <name>dfs.data.dir</name> <value>/opt/hadoop/data/dfs.data.dir</value> </property> <property> <name>dfs.permissions</name> <value>false</value> </property> </configuration>
mapred-site.xml
<configuration> <property> <name>mapred.job.tracker</name> <value>10.10.97.151:9001</value> </property> <property> <name>mapred.system.dir</name> <value>/system/mapred.system.dir</value> </property> <property> <name>mapred.local.dir</name> <value>/opt/hadoop/data/mapred.local.dir</value> </property> </configuration>
- deploy.sh: 配置hadoop-env.sh和~/.bash_profile
- ssh-config.sh
- sync.sh
-
clear.sh
4. summary
a. master配置文件中只需要namenode和secondry namenode的信息,不需要jobtracker的信息。
b. hadoop namenode –format之后如果要重新格式化需要先删除各个datanode节点的dfs.data.dir
c. 使用rcp代替scp回提高效率。