hadoop-ec2-init-remote.sh
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:4k
源码类别:

网格计算

开发平台:

Java

  1. #!/usr/bin/env bash
  2. ################################################################################
  3. # Script that is run on each EC2 instance on boot. It is passed in the EC2 user
  4. # data, so should not exceed 16K in size.
  5. ################################################################################
  6. ################################################################################
  7. # Initialize variables
  8. ################################################################################
  9. # Slaves are started after the master, and are told its address by sending a
  10. # modified copy of this file which sets the MASTER_HOST variable. 
  11. # A node  knows if it is the master or not by inspecting the security group
  12. # name. If it is the master then it retrieves its address using instance data.
  13. MASTER_HOST=%MASTER_HOST% # Interpolated before being sent to EC2 node
  14. SECURITY_GROUPS=`wget -q -O - http://169.254.169.254/latest/meta-data/security-groups`
  15. IS_MASTER=`echo $SECURITY_GROUPS | awk '{ a = match ($0, "-master$"); if (a) print "true"; else print "false"; }'`
  16. if [ "$IS_MASTER" == "true" ]; then
  17.  MASTER_HOST=`wget -q -O - http://169.254.169.254/latest/meta-data/local-hostname`
  18. fi
  19. HADOOP_HOME=`ls -d /usr/local/hadoop-*`
  20. ################################################################################
  21. # Hadoop configuration
  22. # Modify this section to customize your Hadoop cluster.
  23. ################################################################################
  24. cat > $HADOOP_HOME/conf/hadoop-site.xml <<EOF
  25. <?xml version="1.0"?>
  26. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
  27. <configuration>
  28. <property>
  29.   <name>hadoop.tmp.dir</name>
  30.   <value>/mnt/hadoop</value>
  31. </property>
  32. <property>
  33.   <name>fs.default.name</name>
  34.   <value>hdfs://$MASTER_HOST:50001</value>
  35. </property>
  36. <property>
  37.   <name>mapred.job.tracker</name>
  38.   <value>hdfs://$MASTER_HOST:50002</value>
  39. </property>
  40. <property>
  41.   <name>tasktracker.http.threads</name>
  42.   <value>80</value>
  43. </property>
  44. <property>
  45.   <name>mapred.tasktracker.map.tasks.maximum</name>
  46.   <value>3</value>
  47. </property>
  48. <property>
  49.   <name>mapred.tasktracker.reduce.tasks.maximum</name>
  50.   <value>3</value>
  51. </property>
  52. <property>
  53.   <name>mapred.output.compress</name>
  54.   <value>true</value>
  55. </property>
  56. <property>
  57.   <name>mapred.output.compression.type</name>
  58.   <value>BLOCK</value>
  59. </property>
  60. <property>
  61.   <name>dfs.client.block.write.retries</name>
  62.   <value>3</value>
  63. </property>
  64. </configuration>
  65. EOF
  66. # Configure Hadoop for Ganglia
  67. # overwrite hadoop-metrics.properties
  68. cat > $HADOOP_HOME/conf/hadoop-metrics.properties <<EOF
  69. # Ganglia
  70. # we push to the master gmond so hostnames show up properly
  71. dfs.class=org.apache.hadoop.metrics.ganglia.GangliaContext
  72. dfs.period=10
  73. dfs.servers=$MASTER_HOST:8649
  74. mapred.class=org.apache.hadoop.metrics.ganglia.GangliaContext
  75. mapred.period=10
  76. mapred.servers=$MASTER_HOST:8649
  77. jvm.class=org.apache.hadoop.metrics.ganglia.GangliaContext
  78. jvm.period=10
  79. jvm.servers=$MASTER_HOST:8649
  80. EOF
  81. ################################################################################
  82. # Start services
  83. ################################################################################
  84. [ ! -f /etc/hosts ] &&  echo "127.0.0.1 localhost" > /etc/hosts
  85. mkdir -p /mnt/hadoop/logs
  86. # not set on boot
  87. export USER="root"
  88. if [ "$IS_MASTER" == "true" ]; then
  89.   # MASTER
  90.   # Prep Ganglia
  91.   sed -i -e "s|( *mcast_join *=.*)|#1|" 
  92.          -e "s|( *bind *=.*)|#1|" 
  93.          -e "s|( *mute *=.*)|  mute = yes|" 
  94.          -e "s|( *location *=.*)|  location = "master-node"|" 
  95.          /etc/gmond.conf
  96.   mkdir -p /mnt/ganglia/rrds
  97.   chown -R ganglia:ganglia /mnt/ganglia/rrds
  98.   rm -rf /var/lib/ganglia; cd /var/lib; ln -s /mnt/ganglia ganglia; cd
  99.   service gmond start
  100.   service gmetad start
  101.   apachectl start
  102.   # Hadoop
  103.   # only format on first boot
  104.   [ ! -e /mnt/hadoop/dfs ] && "$HADOOP_HOME"/bin/hadoop namenode -format
  105.   "$HADOOP_HOME"/bin/hadoop-daemon.sh start namenode
  106.   "$HADOOP_HOME"/bin/hadoop-daemon.sh start jobtracker
  107. else
  108.   # SLAVE
  109.   # Prep Ganglia
  110.   sed -i -e "s|( *mcast_join *=.*)|#1|" 
  111.          -e "s|( *bind *=.*)|#1|" 
  112.          -e "s|(udp_send_channel {)|1n  host=$MASTER_HOST|" 
  113.          /etc/gmond.conf
  114.   service gmond start
  115.   # Hadoop
  116.   "$HADOOP_HOME"/bin/hadoop-daemon.sh start datanode
  117.   "$HADOOP_HOME"/bin/hadoop-daemon.sh start tasktracker
  118. fi
  119. # Run this script on next boot
  120. rm -f /var/ec2/ec2-run-user-data.*