Net-FullAuto

 view release on metacpan or  search on metacpan

lib/Net/FullAuto/ISets/Amazon/Hadoop_is.pm  view on Meta::CPAN

   ($stdout,$stderr)=$handle->cmd(
      "sudo sed -i \'/[<]configuration[>]/a$ad\' ".
      "/opt/$targz/etc/hadoop/core-site.xml");
   ($stdout,$stderr)=$handle->cmd( # bash shell specific
      "sudo sed -i \'s/NL/\'\"`echo \\\\\\n`/g\" ".
      "/opt/$targz/etc/hadoop/core-site.xml");
   $ad='NL<property>NL<name>dfs.replication</name>NL'. # NL is newline
       '<value>2</value>NL'.
       '</property>NLNL'.
       '<property>NL'.
       '<name>dfs.permissions</name>NL'.
       '<value>false</value>NL'.
       '</property>';
   ($stdout,$stderr)=$handle->cmd(
      "sudo sed -i \'/[<]configuration[>]/a$ad\' ".
      "/opt/$targz/etc/hadoop/hdfs-site.xml");
   ($stdout,$stderr)=$handle->cmd( # bash shell specific
      "sudo sed -i \'s/NL/\'\"`echo \\\\\\n`/g\" ".
      "/opt/$targz/etc/hadoop/hdfs-site.xml");
   ($stdout,$stderr)=$handle->cmd(
      "sudo cp /opt/$targz/etc/hadoop/mapred-site.xml.template ".
      "/opt/$targz/etc/hadoop/mapred-site.xml");
   $ad='NL<property>NL<name>mapred.job.tracker</name>NL'. # NL is newline
       '<value>hdfs://'.$mdns.':8021</value>NL'.
       '</property>';
   ($stdout,$stderr)=$handle->cmd(
      "sudo sed -i \'/[<]configuration[>]/a$ad\' ".
      "/opt/$targz/etc/hadoop/mapred-site.xml");
   ($stdout,$stderr)=$handle->cmd( # bash shell specific
      "sudo sed -i \'s/NL/\'\"`echo \\\\\\n`/g\" ".
      "/opt/$targz/etc/hadoop/mapred-site.xml");
   ($stdout,$stderr)=$handle->cmd(
      "sudo rm -rvf /opt/$targz/etc/hadoop/slaves",'__display__');
   ($stdout,$stderr)=$handle->cmd(
      "sudo touch /opt/$targz/etc/hadoop/slaves",'__display__');
   ($stdout,$stderr)=$handle->cmd(
      "sudo touch /opt/$targz/etc/hadoop/masters",'__display__');
   ($stdout,$stderr)=$handle->cmd(
      "sudo chmod -v 777 /opt/$targz/etc/hadoop/slaves",'__display__');
   ($stdout,$stderr)=$handle->cmd(
      "sudo chmod -v 777 /opt/$targz/etc/hadoop/masters",'__display__');
   if ($cnt==3) {
      my @dns=();
      foreach my $inum (0..3) {
         my $inid=$main::aws->{$server_type}->[$inum]->[0]->{InstanceId};
         $c="aws ec2 describe-instances --instance-ids $inid 2>&1";
         ($hash,$output,$error)=run_aws_cmd($c);
         my $dns=$hash->{Reservations}->[0]->{Instances}->[0]
                 ->{PublicDnsName};
         push @dns,$dns;
      }
      foreach my $srv (0..3) {
         my $inst=$main::aws->{$server_type}->[$srv]->[1];
         foreach my $in (0..3) {
            my $type=($in<2)?'masters':'slaves';
            print "UPDATING $type with $dns[$in]\n";
            ($stdout,$stderr)=$inst->cmd(
               "sudo echo $dns[$in] >> /opt/$targz/etc/hadoop/$type",
               '__display__');
            ($stdout,$stderr)=$inst->cmd(
               "sudo chown -Rv ubuntu:ubuntu /opt/$targz",
               '__display__');
         }
         ($stdout,$stderr)=$inst->cmd(
            "sudo chmod -v 644 /opt/$targz/etc/hadoop/masters",
            '__display__');
         ($stdout,$stderr)=$inst->cmd(
            "sudo chmod -v 644 /opt/$targz/etc/hadoop/slaves",
            '__display__');
      }
      my $starting_hadoop=<<'END';


   .oPYo. ooooo    .oo  .oPYo. ooooo o o    o .oPYo.      o    o  .oPYo.
   8        8     .P 8  8   `8   8   8 8b   8 8    8      8    8  8    8
   `Yooo.   8    .P  8  8YooP'   8   8 8`b  8 8           8    8  8YooP'
       `8   8   oPooo8  8   `b   8   8 8 `b 8 8   oo      8    8  8
        8   8  .P    8  8    8   8   8 8  `b8 8    8      8    8  8
   `YooP'   8 .P     8  8    8   8   8 8   `8 `YooP8      `YooP'  8
   ....................................................................
   ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
   ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

                         ,--,
                     ,--/ ,  `.~,
                  (_/  /   ^ ^l i __              __
                    |  V |   __/ / /_  ____ _____/ /___  ____  ____
                   /    \/ \|U  / __ \/ __ `/ __  / __ \/ __ \/ __ \
         Apacheâ„¢   \/|_|< /_|  / / / / /_/ / /_/ / /_/ / /_/ / /_/ /
                              /_/ /_/\__,_/\__,_/\____/\____/ .___/
                                                           /_/     ®
   http://hadoop.apache.org

   (The Apache™ Foundation is **NOT** a sponsor of the FullAuto© Project.)

END
      print $starting_hadoop;sleep 10;
      $master=$main::aws->{$server_type}->[0]->[1];
      ($stdout,$stderr)=$master->cmd(
         "/opt/$targz/bin/hdfs namenode -format",'__display__');
      ($stdout,$stderr)=$master->cwd("/opt/$targz/sbin");
      $master->{_cmd_handle}->print('./start-all.sh');
      my $prompt=substr($master->{_cmd_handle}->prompt(),1,-1);
      my $cnt=0;my $test_output='';
      foreach (1..100) {
         my $output=Net::FullAuto::FA_Core::fetch($master);
         $test_output.=$output;
         last if $test_output=~/$prompt/;
         print $output;
         if ($test_output=~/[(]yes\/no[)][?]/) {
            $master->{_cmd_handle}->print("yes");
            $test_output='';
         }
      }
      print "\n   ACCESS HADOOP UI AT:\n\n",
            " http://$mdns:50070/dfshealth.html\n";
      my $thanks=<<'END';

     ______                  _    ,
       / /              /   ' )  /        /
    --/ /_  __.  ____  /_    /  / __ . . /



( run in 0.600 second using v1.01-cache-2.11-cpan-71847e10f99 )