Hadoop集羣搭建

Hadoop集羣配置(最全面總結)  huangguisu

       一般,集羣裏的一臺機器被指定爲 NameNode,另外一臺不一樣的機器被指定爲JobTracker。這些機器是masters。餘下的機器即做爲DataNode做爲TaskTracker。這些機器是slaves\html

官方地址:(http://hadoop.apache.org/common/docs/r0.19.2/cn/cluster_setup.html)java

1 先決條件

  1. 確保在你集羣中的每一個節點上都安裝了全部必需軟件:sun-JDK  ,ssh,Hadoopnode

  2. JavaTM1.5.x,必須安裝,建議選擇Sun公司發行的Java版本。shell

  3. ssh 必須安裝而且保證 sshd一直運行,以便用Hadoop 腳本管理遠端Hadoop守護進程。apache

2 實驗環境搭建

   2.1  準備工做

     操做系統:Ubuntu
     部署:Vmvare
     在vmvare安裝好一臺Ubuntu虛擬機後,能夠導出或者克隆出另外兩臺虛擬機。
     說明:
    保證虛擬機的ip和主機的ip在同一個ip段,這樣幾個虛擬機和主機之間能夠相互通訊。
    爲了保證虛擬機的ip和主機的ip在同一個ip段,虛擬機鏈接設置爲橋連。

ubuntu

     準備機器:一臺master,若干臺slave,配置每臺機器的/etc/hosts保證各臺機器之間經過機器名能夠互訪,例如:
     10.64.56.76 node1(master)   
     10.64.56.77 node2 (slave1)   
     10.64.56.78 node3 (slave2)
     主機信息:  安全

 

機器名   IP地址 做用
Node1 10.64.56.76 NameNode、JobTracker
Node2 10.64.56.77 DataNode、TaskTracker
Node3 10.64.56.78 DataNode、TaskTracker

爲保證環境一致先安裝好JDK和ssh:bash

2.2 安裝JDK

#安裝JDK
$ sudo apt-get install sun-java6-jdk1.2.3     
這個安裝,java執行文件自動添加到/usr/bin/目錄。
驗證 shell命令 :java -version 看是否與你的版本號一致。服務器

2.3下載、建立用戶

$ useradd hadoop
$ cd  /home/hadoop
網絡

在全部的機器上都創建相同的目錄,也能夠就創建相同的用戶,最好是以該用戶的home路徑來作hadoop的安裝路徑。
例如在全部的機器上的安裝路徑都是:/home/hadoop/hadoop-0.20.203,這個不須要mkdir,在/home/hadoop/下解壓hadoop包的時候,會自動生成)
(固然能夠安裝/usr/local/目錄下,例如/usr/local/hadoop-0.20.203/
  chown -R hadoop /usr/local/hadoop-0.20.203/
  chgrp -R hadoop  /usr/local/hadoop-0.20.203/

(最好不要使用root安裝,由於不推薦各個機器之間使用root訪問 )

2.4 安裝ssh和配置

1) 安裝:sudo apt-get install ssh

     這個安裝完後,能夠直接使用ssh命令 了。
     執行$ netstat  -nat    查看22端口是否開啓了。
     測試:ssh localhost。
     輸入當前用戶的密碼,回車就ok了。說明安裝成功,同時ssh登陸須要密碼。
   (這種默認安裝方式完後,默認配置文件是在/etc/ssh/目錄下。sshd配置文件是:/etc/ssh/sshd_config): 

    注意:在全部機子都須要安裝ssh。

2)  配置

在Hadoop啓動之後,Namenode是經過SSH(Secure Shell)來啓動和中止各個datanode上的各類守護進程的,這就需要在節點之間執行指令的時候是不需要輸入密碼的形式,故咱們需要配置SSH運用無密碼公鑰認證的形式。
以本文中的三臺機器爲例,如今node1是主節點,他需要鏈接node2和node3。需要肯定每臺機器上都安裝了ssh,而且datanode機器上sshd服務已經啓動。

( 說明:hadoop@hadoop~]$ssh-keygen  -t  rsa
這個命令將爲hadoop上的用戶hadoop生成其密鑰對,詢問其保存路徑時直接回車採用默認路徑,當提示要爲生成的密鑰輸入passphrase的時 候,直接回車,也就是將其設定爲空密碼。生成的密鑰對id_rsa,id_rsa.pub,默認存儲在/home/hadoop/.ssh目錄下而後將 id_rsa.pub的內容複製到每一個機器(也包括本機)的/home/dbrg/.ssh/authorized_keys文件中,若是機器上已經有 authorized_keys這個文件了,就在文件末尾加上id_rsa.pub中的內容,若是沒有authorized_keys這個文件,直接複製 過去就行.)

3) 首先設置namenode的ssh爲無需密碼的、自動登陸。

切換到hadoop用戶( 保證用戶hadoop能夠無需密碼登陸,由於咱們後面安裝的hadoop屬主是hadoop用戶。)

$ su hadoop

cd /home/hadoop

$ ssh-keygen -t rsa

而後一直按回車
完成後,在home跟目錄下會產生隱藏文件夾.ssh

$ cd .ssh

以後ls 查看文件

cp id_rsa.pub  authorized_keys

測試:

$ssh localhost

或者:

$ ssh node1                                      

第一次ssh會有提示信息:

The authenticity of host ‘node1 (10.64.56.76)’ can’t be established.
RSA key fingerprint is 03:e0:30:cb:6e:13:a8:70:c9:7e:cf:ff:33:2a:67:30.
Are you sure you want to continue connecting (yes/no)?

輸入 yes 來繼續。這會把該服務器添加到你的已知主機的列表中

發現連接成功,而且無需密碼。


4 ) 複製authorized_keys到node2 和node3 上

爲了保證node1能夠無需密碼自動登陸到node2和node3,先在node2和node3上執行

$ su hadoop

cd /home/hadoop

$ ssh-keygen -t rsa 一路按回車.
而後回到node1,複製authorized_keys到node2 和node3

[hadoop@hadoop .ssh]$ scp authorized_keys   node2:/home/hadoop/.ssh/

[hadoop@hadoop .ssh]$ scp authorized_keys   node3:/home/hadoop/.ssh/

這裏會提示輸入密碼,輸入hadoop帳號密碼就能夠了。
改動你的 authorized_keys 文件的許可權限

[hadoop@hadoop .ssh]$chmod 644 authorized_keys

測試:ssh node2或者ssh node3(第一次須要輸入yes)。
若是不需要輸入密碼則配置成功,若是還需要請檢查上面的配置能不能正確。

2.5 安裝Hadoop

#切換爲hadoop用戶

su hadoop

wgethttp://apache.mirrors.tds.net//hadoop/common/hadoop-0.20.203.0/hadoop-0.20.203.0rc1.tar.gz

下載安裝包後,直接解壓安裝便可:

$ tar -zxvfhadoop-0.20.203.0rc1.tar.gz 

1 ) 安裝Hadoop集羣一般要將安裝軟件解壓到集羣內的全部機器上。而且安裝路徑要一致,若是咱們用HADOOP_HOME指代安裝的根路徑,一般,集羣裏的全部機器的     
     HADOOP_HOME路徑相同。
2 )  若是集羣內機器的環境徹底同樣,能夠在一臺機器上配置好,而後把配置好的軟件即hadoop-0.20.203整個文件夾拷貝到其餘機器的相同位置便可。
3 )  能夠將Master上的Hadoop經過scp拷貝到每個Slave相同的目錄下,同時根據每個Slave的Java_HOME 的不一樣修改其hadoop-env.sh 。
4)   爲了方便,使用hadoop命令或者start-all.sh等命令,修改Master上/etc/profile 新增如下內容:
    export HADOOP_HOME=/home/hadoop/hadoop-0.20.203
    exportPATH=$PATH:$HADOOP_HOME/bin
   修改完畢後,執行source /etc/profile 來使其生效。 

6)配置conf/hadoop-env.sh文件

配置conf/hadoop-env.sh文件
#添加

export JAVA_HOME=/usr/lib/jvm/java-6-sun/

這裏修改成你的jdk的安裝位置。

測試hadoop安裝:

Bin/hadoop jar hadoop-0.20.2-examples.jarwordcount  conf/   /tmp/out

3. 集羣配置(全部節點相同)

3.1配置文件:conf/core-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>
<configuration>
<property>
 <name>fs.default.name</name>
  <value>hdfs://node1:49000</value>
</property>
<property>
  <name>hadoop.tmp.dir</name>
 <value>/home/hadoop/hadoop_home/var</value>
</property>
</configuration>
1)fs.default.name是NameNode的URI。hdfs://主機名:端口/
2)hadoop.tmp.dir :Hadoop的默認臨時路徑,這個最好配置,若是在新增節點或者其餘狀況下莫名其妙的DataNode啓動不了,就刪除此文件中的tmp目錄便可。不過 若是刪除了NameNode機器的此目錄,那麼就須要從新執行NameNode格式化的命令。

3.2配置文件:conf/mapred-site.xml

<?xmlversion="1.0"?>
<?xml-stylesheettype="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
  <name>mapred.job.tracker</name>
  <value>node1:49001</value>
</property>
<property>
  <name>mapred.local.dir</name>
 <value>/home/hadoop/hadoop_home/var</value>
</property>
</configuration>

1)mapred.job.tracker是JobTracker的主機(或者IP)和端口。主機:端口。

3.3配置文件:conf/hdfs-site.xml

<?xmlversion="1.0"?>
<?xml-stylesheettype="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/name1, /home/hadoop/name2</value> #hadoop的name目錄路徑
<description>  </description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/data1, /home/hadoop/data2</value>
<description> </description>
</property>
<property>
  <name>dfs.replication</name>
  <!-- 咱們的集羣又兩個結點,因此rep兩份 -->
  <value>2</vaue>
</property>
</configuration> 1)   dfs.name.dir是NameNode持久存儲名字空間及事務日誌的本地文件系統路徑。 當這個值是一個逗號分割的目錄列表時,nametable數據將會被複制到全部目錄中作冗餘備份。
2)   dfs.data.dir是DataNode存放塊數據的本地文件系統路徑,逗號分割的列表。 當這個值是逗號分割的目錄列表時,數據將被存儲在全部目錄下,一般分佈在不一樣設備上。
3)dfs.replication是數據須要備份的數量,默認是3,若是此數大於集羣的機器數會出錯。

注意:此處的name一、name二、data一、data2目錄不能預先建立,hadoop格式化時會自動建立,若是預先建立反而會有問題。

3.4配置masters和slaves主從結點

配置conf/masters和conf/slaves來設置主從結點,注意最好使用主機名,而且保證機器之間經過主機名能夠互相訪問,每一個主機名一行。

vi masters:
輸入:

node1

vi slaves:

輸入:
node2
node3

配置結束,把配置好的hadoop文件夾拷貝到其餘集羣的機器中,而且保證上面的配置對於其餘機器而言正確,例如:若是其餘機器的Java安裝路徑不同,要修改conf/hadoop-env.sh 

$ scp -r /home/hadoop/hadoop-0.20.203 root@node2: /home/hadoop/

 

4 hadoop啓動

4.1 格式化一個新的分佈式文件系統

先格式化一個新的分佈式文件系統

$ cd hadoop-0.20.203
$ bin/hadoop namenode -format

成功狀況下系統輸出:

12/02/06 00:46:50 INFO namenode.NameNode:STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = ubuntu/127.0.1.1
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 0.20.203.0
STARTUP_MSG:   build =http://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20-security-203-r 1099333; compiled by 'oom' on Wed May 4 07:57:50 PDT 2011
************************************************************/

12/02/0600:46:50 INFO namenode.FSNamesystem: fsOwner=root,root
12/02/06 00:46:50 INFO namenode.FSNamesystem:supergroup=supergroup
12/02/06 00:46:50 INFO namenode.FSNamesystem:isPermissionEnabled=true
12/02/06 00:46:50 INFO common.Storage: Imagefile of size 94 saved in 0 seconds.
12/02/06 00:46:50 INFO common.Storage: Storagedirectory /opt/hadoop/hadoopfs/name1 has been successfully formatted.
12/02/06 00:46:50 INFO common.Storage: Imagefile of size 94 saved in 0 seconds.
12/02/06 00:46:50 INFO common.Storage: Storagedirectory /opt/hadoop/hadoopfs/name2 has been successfully formatted.
12/02/06 00:46:50 INFO namenode.NameNode:SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode atv-jiwan-ubuntu-0/127.0.0.1
************************************************************/

查看輸出保證分佈式文件系統格式化成功
執行完後能夠到master機器上看到/home/hadoop//name1和/home/hadoop//name2兩個目錄。在主節點master上面啓動hadoop,主節點會啓動全部從節點的hadoop。

4.2 啓動全部節點

啓動方式1

$ bin/start-all.sh (同時啓動HDFS和Map/Reduce)
系統輸出:

starting namenode, logging to /usr/local/hadoop/logs/hadoop-hadoop-namenode-ubuntu.out
node2: starting datanode, loggingto /usr/local/hadoop/logs/hadoop-hadoop-datanode-ubuntu.out
node3: starting datanode, loggingto /usr/local/hadoop/logs/hadoop-hadoop-datanode-ubuntu.out
node1: starting secondarynamenode,logging to /usr/local/hadoop/logs/hadoop-hadoop-secondarynamenode-ubuntu.out
starting jobtracker, logging to/usr/local/hadoop/logs/hadoop-hadoop-jobtracker-ubuntu.out
node2: starting tasktracker,logging to /usr/local/hadoop/logs/hadoop-hadoop-tasktracker-ubuntu.out
node3: starting tasktracker,logging to /usr/local/hadoop/logs/hadoop-hadoop-tasktracker-ubuntu.out
As you can see in slave's output above, it will automatically format it's storage directory(specified by dfs.data.dir) if it is not formattedalready. It will also create the directory if it does not exist yet.


執行完後能夠到master(node1)和slave(node1,node2)機器上看到/home/hadoop/hadoopfs/data1和/home/hadoop/data2兩個目錄。

啓動方式2

啓動Hadoop集羣須要啓動HDFS集羣和Map/Reduce集羣。

在分配的NameNode上,運行下面的命令啓動HDFS:
$ bin/start-dfs.sh(單獨啓動HDFS集羣)

bin/start-dfs.sh腳本會參照NameNode上${HADOOP_CONF_DIR}/slaves文件的內容,在全部列出的slave上啓動DataNode守護進程。

在分配的JobTracker上,運行下面的命令啓動Map/Reduce:
$bin/start-mapred.sh (單獨啓動Map/Reduce)

bin/start-mapred.sh腳本會參照JobTracker上${HADOOP_CONF_DIR}/slaves文件的內容,在全部列出的slave上啓動TaskTracker守護進程。

4.3 關閉全部節點

從主節點master關閉hadoop,主節點會關閉全部從節點的hadoop。

$ bin/stop-all.sh 

Hadoop守護進程的日誌寫入到 ${HADOOP_LOG_DIR} 目錄 (默認是 ${HADOOP_HOME}/logs).

${HADOOP_HOME}就是安裝路徑.

5 .測試

1)瀏覽NameNode和JobTracker的網絡接口,它們的地址默認爲:

NameNode - http://node1:50070/
JobTracker - http://node2:50030/

3)   使用netstat  –nat查看端口49000和49001是否正在使用。

4)  使用jps查看進程

要想檢查守護進程是否正在運行,可使用 jps 命令(這是用於 JVM 進程的ps 實用程序)。這個命令列出 5 個守護進程及其進程標識符。

5)將輸入文件拷貝到分佈式文件系統:
$ bin/hadoop fs -mkdir input
$ bin/hadoop fs -put conf/core-site.xml input

運行發行版提供的示例程序:
$ bin/hadoop jar hadoop-0.20.2-examples.jar grep input output 'dfs[a-z.]+'

6.補充
Q: bin/hadoop jar hadoop-0.20.2-examples.jar grep input output 'dfs[a-z.]+' 什麼意思啊?
A: bin/hadoop jar(使用hadoop運行jar包) hadoop-0.20.2_examples.jar(jar包的名字) grep (要使用的類,後邊的是參數)input output 'dfs[a-z.]+'
整個就是運行hadoop示例程序中的grep,對應的hdfs上的輸入目錄爲input、輸出目錄爲output。
Q: 什麼是grep?
A: A map/reduce program that counts the matches of a regex in the input.

查看輸出文件:

將輸出文件從分佈式文件系統拷貝到本地文件系統查看:
$ bin/hadoop fs -get output output
$ cat output/*

或者

在分佈式文件系統上查看輸出文件:
$ bin/hadoop fs -cat output/*

統計結果:
root@v-jiwan-ubuntu-0:~/hadoop/hadoop-0.20.2-bak/hadoop-0.20.2#bin/hadoop fs -cat output/part-00000
3       dfs.class
2       dfs.period
1       dfs.file
1      dfs.replication
1       dfs.servers
1       dfsadmin

7. HDFS經常使用操做

hadoopdfs -ls 列出HDFS下的文件
hadoop dfs -ls in 列出HDFS下某個文檔中的文件
hadoop dfs -put test1.txt test 上傳文件到指定目錄而且從新命名,只有全部的DataNode都接收完數據纔算成功
hadoop dfs -get in getin 從HDFS獲取文件而且從新命名爲getin,同put同樣可操做文件也可操做目錄
hadoop dfs -rmr out 刪除指定文件從HDFS上
hadoop dfs -cat in/* 查看HDFS上in目錄的內容
hadoop dfsadmin -report 查看HDFS的基本統計信息,結果以下
hadoop dfsadmin -safemode leave 退出安全模式
hadoop dfsadmin -safemode enter 進入安全模式

8.添加節點

可擴展性是HDFS的一個重要特性,首先在新加的節點上安裝hadoop,而後修改$HADOOP_HOME/conf /master文件,加入 NameNode主機名,而後在NameNode節點上修改$HADOOP_HOME/conf/slaves文件,加入新加節點主機名,再創建到新加節 點無密碼的SSH鏈接

運行啓動命令:

start-all.sh

而後能夠經過http://(Masternode的主機名):50070查看新添加的DataNode

9負載均衡

start-balancer.sh,可使DataNode節點上選擇策略從新平衡DataNode上的數據塊的分佈


結束語:遇到問題時,先查看logs,頗有幫助。

 

10 SHell自動安裝腳本


    1. #!/bin/bash  
    2.   
    3. #validate user or group  
    4. validate() {  
    5.  if [ 'id -u' == 0 ];then  
    6.    echo "must not be root!"  
    7.    exit 0  
    8.  else  
    9.    echo "---------welcome to hadoop---------"  
    10.  fi  
    11. }  
    12.   
    13. #hadoop install  
    14. hd-dir() {  
    15.  if [ ! -d /home/hadoop/ ];then  
    16.    mkdir /home/hadoop/  
    17.  else  
    18.    echo "download hadoop will begin"  
    19.  fi  
    20. }  
    21.   
    22. download-hd() {  
    23.  wget -c http://archive.apache.org/dist/hadoop/core/stable/hadoop-1.0.4.tar.gz -O /home/hadoop/hadoop-1.0.4.tar.gz  
    24.  tar -xzvf /home/hadoop/hadoop-1.0.4.tar.gz -C /home/hadoop  
    25.  rm /home/hadoop/hadoop-1.0.4.tar.gz  
    26.  Ln -s /home/hadoop/hadoop-1.0.4 /home/hadoop/hadoop1.0.4  
    27. }  
    28.   
    29. #hadoop conf  
    30. hd-conf() {  
    31.  echo "export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-i386" >> /home/hadoop/hadoop1.0.4/conf/hadoop-env.sh  
    32.  echo "#set path jdk" >> /home/hadoop/.profile  
    33.  echo "export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-i386" >> /home/hadoop/.profile  
    34.  echo "#hadoop path" >> /home/hadoop/.profile  
    35.  echo "export HADOOP_HOME=/home/hadoop/hadoop1.0.4" >> /home/hadoop/.profile  
    36.  echo "PATH=$PATH:$HADOOP_HOME/bin:$JAVA_HOME/bin" >> /home/hadoop/.profile  
    37.  echo "HADOOP_HOME_WARN_SUPPRESS=1" >> /home/hadoop/.profile  
    38. #hadoop core-site.xml  
    39.  echo "<configuration>" >> /home/hadoop/hadoop1.0.4/conf/core-site.xml  
    40.  echo "<property>" >> /home/hadoop/hadoop1.0.4/conf/core-site.xml  
    41.  echo "<name>fs.default.name</name>" >> /home/hadoop/hadoop1.0.4/conf/core-site.xml  
    42.  echo "<value>hdfs://hadoop-master:9000" >> /home/hadoop/hadoop1.0.4/conf/core-site.xml  
    43.  echo "</property>" >> /home/hadoop/hadoop1.0.4/conf/core-site.xml  
    44.  echo "<property>" >> /home/hadoop/hadoop1.0.4/conf/core-site.xml  
    45.  echo "<name>hadoop.tmp.dir</name>" >> /home/hadoop/hadoop1.0.4/conf/core-site.xml  
    46.  echo "<value>/home/hadoop/tmp</value>" >> /home/hadoop/hadoop1.0.4/conf/core-site.xml  
    47.  echo "</property>" >> /home/hadoop/hadoop1.0.4/conf/core-site.xml  
    48.  echo "</configuration>" >> /home/hadoop/hadoop1.0.4/conf/core-site.xml  
    49. #hadoop hdfs-site.xml  
    50.   
    51.  echo "<configuration>" >> /home/hadoop/hadoop1.0.4/conf/hdfs-site.xml  
    52.  echo "<property>" >> /home/hadoop/hadoop1.0.4/conf/hdfs-site.xml  
    53.  echo "<name>dfs.name.dir</name>" >> /home/hadoop/hadoop1.0.4/conf/hdfs-site.xml  
    54.  echo "<value>/home/hadoop/name</value>" >> /home/hadoop/hadoop1.0.4/conf/hdfs-site.xml  
    55.  echo "</property>" >> /home/hadoop/hadoop1.0.4/conf/hdfs-site.xml  
    56.  echo "<property>" >> /home/hadoop/hadoop1.0.4/conf/hdfs-site.xml  
    57.  echo "<name>dfs.data.dir</name>" >> /home/hadoop/hadoop1.0.4/conf/hdfs-site.xml  
    58.  echo "<value>/home/hadoop/data</value>" >> /home/hadoop/hadoop1.0.4/conf/hdfs-site.xml  
    59.  echo "</property>" >> /home/hadoop/hadoop1.0.4/conf/hdfs-site.xml  
    60.  echo "<property>" >> /home/hadoop/hadoop1.0.4/conf/hdfs-site.xml  
    61.  echo "<name>dfs.replication</name>" >> /home/hadoop/hadoop1.0.4/conf/hdfs-site.xml  
    62.  echo "<value>1</value>" >> /home/hadoop/hadoop1.0.4/conf/hdfs-site.xml  
    63.  echo "</property>" >> /home/hadoop/hadoop1.0.4/conf/hdfs-site.xml  
    64.  echo "</configuration>" >> /home/hadoop/hadoop1.0.4/conf/hdfs-site.xml  
    65. # hadoop mapred-site.xml  
    66.   
    67.  echo "<configuration>" >> /home/hadoop/hadoop1.0.4/conf/mapred-site.xml  
    68.  echo "<property>" >> /home/hadoop/hadoop1.0.4/conf/mapred-site.xml  
    69.  echo "<name>mapred.job.tracker</name>" >> /home/hadoop/hadoop1.0.4/conf/mapred-site.xml  
    70.  echo "<value>hadoop-master:9001</value>" >> /home/hadoop/hadoop1.0.4/conf/mapred-site.xml  
    71.  echo "</property>" >> /home/hadoop/hadoop1.0.4/conf/mapred-site.xml  
    72.  echo "</configuration>" >> /home/hadoop/hadoop1.0.4/conf/mapred-site.xml  
    73. #hadoop master  
    74.  echo "hadoop-master" >> /home/hadoop/hadoop1.0.4/conf/masters  
    75.   
    76. #hadoop slaves  
    77.  echo "hadoop-master" >> /home/hadoop/hadoop1.0.4/conf/slaves  
    78. source /home/hadoop/.profile  
    79. }  
    80.   
    81. hd-start() {  
    82. hadoop namenode -format  
    83. }  
    84.   
    85.   
    86. yes-or-no() {  
    87.   echo "Is your name $* ?"  
    88.   while true  
    89.   do  
    90.      echo -n "Enter yes or no: "  
    91.      read x  
    92.      case "$x" in  
    93.      y | yes ) return 0;;  
    94.      n | no ) return 1;;  
    95.      * ) echo "Answer yes or no";;  
    96.    esac  
    97.   done  
    98. }  
    99.   
    100. echo "Original params are $*"  
    101.   
    102. if yes-or-no "$1"  
    103. then  
    104.   echo "HI $1,nice name!"  
    105.   validate  
    106.   hd-dir  
    107.   download-hd  
    108.   hd-conf  
    109. else  
    110.   echo "Never mind!"  
    111. fi 
    112. http://blog.csdn.net/hguisu/article/details/7237395
相關文章
相關標籤/搜索