Automaticlly deploy Hadoop on cluster

尽可能做到全自动配置,但是目前还需要一些手工参与。

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 
    隐藏行号 复制代码 Add the following line
    1. #!/bin/bash
      
    2. # Changed file: /etc/hosts, ~/hadoop-0.20.2/conf, ~/.bash_profile, ~/.ssh.
      
    3. INSTALL_HOME=/root
      
    4. HADOOP_INSTALL_FILE=hadoop-0.20.2
      
    5. JAVA_INSTALL_FILE=/usr/java/jdk1.6.0_13
      
    6.  
    7. cd $INSTALL_HOME
      
    8. if -f $HADOOP_INSTALL_FILE;
      
    9.  
    10. tar xzvf $HADOOP_INSTALL_FILE.tar.gz
      
    11. cd ./$HADOOP_INSTALL_FILE/conf
      
    12. # set hadoop environment
      
    13. echo "export JAVA_HOME=$JAVA_INSTALL_FILE" >> hadoop-env.sh
      
    14. echo "export HADOOP_HOME=$INSTALL_HOME/$HADOOP_INSTALL_FILE" >> ~/.bash_profile
      
    15. # set java environment
      
    16. echo "export JAVA_HOME=$JAVA_INSTALL_FILE" >> ~/.bash_profile
      
    17. echo 'export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib' >> ~/.bash_profile
      
    18. echo 'export PATH=$HADOOP_HOME/bin:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH' >> ~/.bash_profile
      
    19.  
    20. source ~/.bash_profile
      
    21.  

  • ssh-config.sh
  • sync.sh

    隐藏行号 复制代码 sync.sh

    1. #!/bin/bash
      
    2. for ((i=1; i<10; ++i)); do
      
    3. echo $i
      
    4. ./sync.exp "$i"
      
    5. done
      
    6.  

     

    隐藏行号 复制代码 sync.exp
    1. #!/bin/bash
      
    2. n=$1
      
    3. echo $n
      
    4. scp ~/.bash_profile 10.10.97.15$n:~
      
    5. scp /etc/hosts 10.10.97.15$n:/etc/hosts
      
    6. scp -r ~/hadoop-0.20.2/conf 10.10.97.15$n:/root/hadoop-0.20.2/
      
    7.  

     

  • clear.sh

    隐藏行号 复制代码 clear.sh
    1. #!/bin/bash
      
    2. for ((i=2; i <10; ++i)); do
      
    3. ./clear.exp $i;
      
    4. done
      
    5.  

    隐藏行号 复制代码 clear.exp
    1. #!/bin/bash
      
    2. n=$1
      
    3. ssh 10.10.97.15$n -l root "rm -rf /opt/hadoop"
      
    4. exit
      
    5.  

     

4. summary

    a. master配置文件中只需要namenode和secondry namenode的信息,不需要jobtracker的信息。

    b. hadoop namenode –format之后如果要重新格式化需要先删除各个datanode节点的dfs.data.dir

    c. 使用rcp代替scp回提高效率。

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值