hadoop集羣的安裝步驟和配置

hadoop由java語言編寫的,首先我們肯定要在電腦中安裝jdk,配置好jdk的環境,接下來就是安裝hadoop集羣的步驟了,在安裝之前需要創建hadoop用戶組和用戶,另外我此時使用的是一主(master)三從(slave1slave2slave3

1、 創建hadoop組和hadoop用戶

[root@master ~]# groupadd hadoop
[root@master ~]# useradd -g hadoop hadoop

2、 上傳、解壓hadoop壓縮包和重名解壓後的目錄

切換到hadoop用戶:

[root@master ~]# su – hadoop

上傳hadoop安裝包:

 

解壓hadoop安裝包和重命名解壓目錄:

[hadoop@master ~]$ tar -zxvf hadoop-1.0.4.tar.gz
[hadoop@master ~]$ mv hadoop-1.0.4 hadoop

3、 配置hadoop的的配置文件

進入hadoopconf目錄:

[hadoop@master ~]$ cd hadoop
[hadoop@master hadoop]$ cd conf
[hadoop@master conf]$ 
[hadoop@master conf]$ ll
總用量 76
-rw-rw-r--. 1 hadoop hadoop 7457 10月  3 2012 capacity-scheduler.xml
-rw-rw-r--. 1 hadoop hadoop  535 10月  3 2012 configuration.xsl
-rw-rw-r--. 1 hadoop hadoop  178 10月  3 2012 core-site.xml
-rw-rw-r--. 1 hadoop hadoop  327 10月  3 2012 fair-scheduler.xml
-rw-rw-r--. 1 hadoop hadoop 2237 10月  3 2012 hadoop-env.sh
-rw-rw-r--. 1 hadoop hadoop 1488 10月  3 2012 hadoop-metrics2.properties
-rw-rw-r--. 1 hadoop hadoop 4644 10月  3 2012 hadoop-policy.xml
-rw-rw-r--. 1 hadoop hadoop  178 10月  3 2012 hdfs-site.xml
-rw-rw-r--. 1 hadoop hadoop 4441 10月  3 2012 log4j.properties
-rw-rw-r--. 1 hadoop hadoop 2033 10月  3 2012 mapred-queue-acls.xml
-rw-rw-r--. 1 hadoop hadoop  178 10月  3 2012 mapred-site.xml
-rw-rw-r--. 1 hadoop hadoop   10 10月  3 2012 masters
-rw-rw-r--. 1 hadoop hadoop   10 10月  3 2012 slaves
-rw-rw-r--. 1 hadoop hadoop 1243 10月  3 2012 ssl-client.xml.example
-rw-rw-r--. 1 hadoop hadoop 1195 10月  3 2012 ssl-server.xml.example
-rw-rw-r--. 1 hadoop hadoop  382 10月  3 2012 taskcontroller.cfg

這裏的配置文件有core-site.xml,hadoop-env.sh,hdfs-site.xml,mapred-site.xml,masters,slaves都需要修改,下面是這幾個配置文件的內容:

core-site.xml配置文件的內容:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
 
<!-- Put site-specific property overrides in this file. -->
 
<configuration>
<property>
     <name>fs.default.name</name>#++++hdfs的默認路徑
     <value>hdfs://master:9000</value>
</property>
</configuration>

hadoop-env.sh配置文件最後面添加的內容:

export JAVA_HOME=/usr/jdk #++++jdk的環境變量++++#

hdfs-site.xml配置文件的內容:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
 
<!-- Put site-specific property overrides in this file. -->
 
<configuration>
<property>  
<name>dfs.replication</name>#++++hdfs的備份數
<value>3</value>
</property>            
    	<property>  
           	<name>dfs.name.dir</name>  #++++namenode的文件存儲路徑,包括edites、fsimage、fstime、VERSION
                <value>/home/hadoop/hadoop/namenode/</value>  
      	</property> 
      	<property>  
           	<name>dfs.data.dir</name>  #++++datanode的存儲路徑,包含數據和數據的原信息。
                <value>/home/hadoop/hadoop/data/</value>  
      	</property>               
    	<property>  
           	<name>hadoop.tmp.dir</name>  #++++mapreduce計算的中間結果的臨時存儲文件夾
                <value>/home/hadoop/hadoop/tmp/</value>  
       	</property>
       	<property>
<name>dfs.permissions</name>#++++認證策略
<value>false</value>
</property>
</configuration>

mapred-site.xml配置文件的內容:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
 
<!-- Put site-specific property overrides in this file. -->
 
<configuration>
<property>  
        	<name>mapred.job.tracker</name>  #++++jobtracker的ip和端口
                <value>master:9001</value>  
        </property>
    	<property>  
           	<name>mapred.tasktracker.map.tasks.maximum</name>  #++++maptask的最大數
           	<value>2</value>  
        </property>                  
    	<property>  
           	<name>mapred.tasktracker.reduce.tasks.maximum</name>  #++++reducetask的最大數
                <value>2</value>  
     	</property>  
</configuration>

masters配置文件的內容:

master
#SecondaryNameNode的位置,可以配置多個

slaves配置文件的內容:

slave1#++++slave的ip或者域名
slave2
slave3

說明:這些配置文件都是事先配置好的,只要上傳到conf目錄下,替換之前的文件即可,採用這種方式是因爲在linux命令行下直接打開文件在裏面輸入內容更容易錯並且不方便。這裏還有一點需要注意,上面配置文件中存在的漢字是用於註釋的,實際上傳的文件是沒有註釋的,因爲不支持漢字。

上傳配置文件過程:

 

4、 到這裏hadoop就安裝結束了,接下來就是將安裝完成的hadoop發送到其他的虛擬機中。

[hadoop@master conf]$ scp -r /home/hadoop/hadoop hadoop@slave1:/home/hadoop
[hadoop@master conf]$ scp -r /home/hadoop/hadoop hadoop@slave2:/home/hadoop
[hadoop@master conf]$ scp -r /home/hadoop/hadoop hadoop@slave3:/home/hadoop

向另外三臺機器發送hadoop,記住這裏發送到另外一臺機器的hadoop用戶下,而非root用戶下。發送完成,就意味着三臺機器的hadoop都已經安裝完成。

5、 安裝ssh

爲了在master機器中啓動集羣中所有的hadoop,這裏安裝ssh是提供啓動方便。

slave1slave2slave3三臺機器都切換到hadoop用戶;

slave1slave2slave3三臺機器中執行ssh localhost,是爲了生成.ssh目錄,這個目錄默認是隱藏的需要使用ll –a命令查看。

[hadoop@slave1 ~]$ ll -a
總用量 32
drwx------.  5 hadoop hadoop 4096 11月 20 23:09 .
drwxr-xr-x.  3 root   root   4096 11月 20 22:20 ..
-rw-r--r--.  1 hadoop hadoop   18 7月  18 2013 .bash_logout
-rw-r--r--.  1 hadoop hadoop  176 7月  18 2013 .bash_profile
-rw-r--r--.  1 hadoop hadoop  124 7月  18 2013 .bashrc
drwxr-xr-x.  2 hadoop hadoop 4096 11月 12 2010 .gnome2
drwxr-xr-x. 14 hadoop hadoop 4096 11月 20 23:03 hadoop
drwx------.  2 hadoop hadoop 4096 11月 20 23:09 .ssh

master機器中生成公鑰和私鑰:

進入.ssh目錄,移除裏面的known_hosts文件

[hadoop@master ~]$ cd .ssh
[hadoop@master .ssh]$ ll
總用量 4
-rw-r--r--. 1 hadoop hadoop 1209 11月 20 23:05 known_hosts
[hadoop@master .ssh]$ 
[hadoop@master .ssh]$ rm -rf known_hosts

生成公鑰和私鑰:

[hadoop@master .ssh]$ ssh-keygen -t rsa

出現需要輸入內容的對話,一律回車,只到生成結束

把公鑰放到認證列表中:

[hadoop@master .ssh]$ cat id_rsa.pub >> authorized_keys

此時.ssh目錄下回多出一個文件authorized_keys

給authorized_keys文件授權

[hadoop@master .ssh]$ chmod 600 authorized_keys

將authorized_keys文件發送到slave1slave2slave3hadoop用戶下的.ssh目錄下:

[hadoop@master .ssh]$ scp ~/.ssh/authorized_keys hadoop@slave1:~/.ssh/
[hadoop@master .ssh]$ scp ~/.ssh/authorized_keys hadoop@slave2:~/.ssh/
[hadoop@master .ssh]$ scp ~/.ssh/authorized_keys hadoop@slave3:~/.ssh/

至此ssh就安裝成功了。

6、 啓動hadoop,這裏要注意,要使用hadoop用戶,不能用root用戶。

格式化集羣:

[hadoop@master .ssh]$ hadoop namenode –format

啓動集羣:

[hadoop@master ~]$ start-all.sh
Warning: $HADOOP_HOME is deprecated.
 
starting namenode, logging to /home/hadoop/hadoop/libexec/../logs/hadoop-hadoop-namenode-master.out
slave3: starting datanode, logging to /home/hadoop/hadoop/libexec/../logs/hadoop-hadoop-datanode-slave3.out
slave2: starting datanode, logging to /home/hadoop/hadoop/libexec/../logs/hadoop-hadoop-datanode-slave2.out
slave1: starting datanode, logging to /home/hadoop/hadoop/libexec/../logs/hadoop-hadoop-datanode-slave1.out
The authenticity of host 'master (192.168.56.200)' can't be established.
RSA key fingerprint is 63:e7:e2:e1:ae:bb:59:f8:ec:e8:23:e0:22:3e:ac:16.
Are you sure you want to continue connecting (yes/no)? yes
master: Warning: Permanently added 'master,192.168.56.200' (RSA) to the list of known hosts.
master: starting secondarynamenode, logging to /home/hadoop/hadoop/libexec/../logs/hadoop-hadoop-secondarynamenode-master.out
starting jobtracker, logging to /home/hadoop/hadoop/libexec/../logs/hadoop-hadoop-jobtracker-master.out
slave2: starting tasktracker, logging to /home/hadoop/hadoop/libexec/../logs/hadoop-hadoop-tasktracker-slave2.out
slave1: starting tasktracker, logging to /home/hadoop/hadoop/libexec/../logs/hadoop-hadoop-tasktracker-slave1.out
slave3: starting tasktracker, logging to /home/hadoop/hadoop/libexec/../logs/hadoop-hadoop-tasktracker-slave3.out

這樣集羣就啓動成功了。

7、 jps命令測試是否安裝成功

master機器:

[hadoop@master ~]$ jps
2372 JobTracker
2298 SecondaryNameNode
2128 NameNode
2471 Jps

slave1機器:

[hadoop@slave1 ~]$ jps
2185 Jps
2019 DataNode
2106 TaskTracker

slave2機器:

[hadoop@slave2 ~]$ jps
2101 TaskTracker
2183 Jps
2013 DataNode

slave3機器:

[hadoop@slave3 ~]$ jps
2115 TaskTracker
2211 Jps
2041 DataNode

至此hadoop集羣的安裝和啓動就完成了,啓動集羣只需要在master機器上執行start-all.sh就可以。停止集羣使用stop-all.sh命令。

發佈了44 篇原創文章 · 獲贊 68 · 訪問量 54萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章