Hadoop:搭建hadoop集群


  • 操作系統環境准備:

准備幾台服務器(我這里是三台虛擬機):

linux ubuntu 14.04 server x64(下載地址:http://releases.ubuntu.com/14.04.2/ubuntu-14.04.2-server-amd64.iso

master:192.168.1.200

node1:192.168.1.201

node2:192.168.1.202

備注:我在安裝ubuntu虛擬機時,我把賬號名和密碼都設置為:hadoop,所有虛擬機的賬戶名密碼一致。

  • 為每台虛擬機配置ip及連網:

請參考我的文章:Linux:宿主機通過橋接方式連接的VMware內部Linux14.04虛擬機(靜態IP)實現上網方案

  • 為每台虛擬機安裝Java&Scala:

備注:因為我后邊要集成spark進來所以也就直接把scala安裝了。

安裝java8在ubuntu14.04上,具體操作請參考我的文章:Linux:Ubuntu 14.04 Server 離線安裝Jjava8(及在線安裝)

安裝scala在ubuntu14.04上,具體操作請參考我的文章:Linux:Ubuntu14.04離線安裝scala(在線安裝)

  • 為每台虛擬機添加hadoop賬戶組,並把hadoop賬戶添加添加到hadoop賬戶組:

1、怎么添加hadoop用戶組,具體操作請參考我的文章:Linux下添加用戶及用戶組

2、添加完用戶組后,修改hadoop用戶組權限(賦予hadoop用戶組管理員權限):

$ sudo vim /etc/sudoers
# 在sudoers文件中修改|添加hadoop用戶組擁有管理員權限
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
hadoop ALL=(ALL) ALL
  • 為每台虛擬機安裝ssh(openssh-server)服務及為Master虛擬機配置ssh無密碼登錄:

具體操作請參考我的文章:Linux:實現Hadoop集群Master無密碼登錄(SSH)各個子節點

  • 為Master虛擬機安裝Hadoop(我這里需要的是Hadoop+Spark,所以沒有配置Maperduce):

1、首先下載hadoop安裝包到Master桌面上(http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.6.4/hadoop-2.6.4.tar.gz

linux下載命令:

2、解壓並修改hadoop安裝目錄權限:

# 解壓hadoop-2.6.4.tar.gz 到/usr/local目錄下
sudo tar -zxvf hadoop-2.6.4.tar.gz -C /usr/local
cd /usr/local
# 重名
sudo mv ./hadoop-2.6.4/ ./hadoop
# 把hadoop安裝目錄控制權限分配給hadoop用戶組的hadoop賬戶
sudo chown –R hadoop:hadoop ./hadoop

3、創建tmp文件夾:

mkdir usr/local/hadoop/tmp

4、修改/ect/profile,將hadoop安裝目錄配置到/etc/profile中:

在/etc/profile最后追加:

export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export JRE_HOME=/usr/lib/jvm/java-8-oracle
export SCALA_HOME=/opt/scala/scala-2.10.5
# add hadoop bin/ directory to PATH
export HADOOP_HOME=/usr/local/hadoop

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$JAVA_HOME:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SCALA_HOME/bin:$PATH
export CLASSPATH=$CLASS_PATH::$JAVA_HOME/lib:$JAVA_HOME/jre/lib

5、配置hadoop-env.sh:

sudo vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh

在文件末尾追加java8的安裝目錄:

export JAVA_HOME=/usr/lib/jvm/java-8-oracle

備注:

1)盡管我們在/etc/profile中已經配置了JAVA_HOME,且hadoop-env.sh中已經包含了

# The java implementation to use.
export JAVA_HOME=${JAVA_HOME}

我們依然需要最佳上邊這行配置。

2)Hadoop配置文件全部在conf目錄下,有三個配置文件:core-site.xml,hdfs-site.xml,mapred-site.xml。

    core-site.xml和hdfs-site.xml是站在HDFS角度上配置文件,core-site.xml和mapred-site.xml是站在MapReduce角度上配置文件。

6、配置core-site.xml:

hadoop的核心配置文件,我們這里配置hdfs的地址和端口號。

vim /usr/local/hadoop/etc/hadoop/core-site.xml

配置內容如下:

<configuration>
     <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/tmp</value>
        <description>A base for other temporary directories.</description>
     </property>

     <property>
         <name>fs.defaultFS</name>
         <value>hdfs://192.168.1.200:9000</value>
     </property>

     <property>
         <name>fs.default.name</name>
         <value>hdfs://192.168.1.200:9000</value>
     </property>

     <property>
         <name>hadoop.native.lib</name>
         <value>false</value>
     </property>

     <property>
         <name>hadoop.proxyuser.hadoop.hosts</name>
         <value>*</value>
     </property>

     <property>
         <name>hadoop.proxyuser.hadoop.groups</name>
         <value>*</value>
     </property>
</configuration>

7、配置hdfs-site.xml:

vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml

配置內容如下:

<configuration>

   <property>
     <name>dfs.replication</name>
     <value>3</value>
   </property>

   <property>
      <name>dfs.namenode.name.dir</name>
      <value>/usr/local/hadoop/dfs/name</value>
   </property>

   <property>
       <name>dfs.datanode.data.dir</name>
       <value>/usr/local/hadoop/dfs/data</value>
   </property>

   <property>
       <name>dfs.webhdfs.enabled</name>
       <value>true</value>
   </property>

   <property>
       <name>dfs.permissions</name>
       <value>false</value>
   </property>

</configuration>

8、配置slaves文件(master機器特有):

vim /usr/local/hadoop/etc/hadoop/slaves

注意:每行寫一個ip。

我的集群配置如下:

192.168.1.200
192.168.1.201
192.168.1.202

9、手動創建目錄(該項可以避免/usr/local/hadoop/dfs/logs、/usr/local/hadoop/dfs/name和/usr/local/hadoop/dfs/data出現權限問題):

1)為了不出問題,一般我們需要手動創建目錄/usr/local/hadoop/dfs/logs、/usr/local/hadoop/dfs/name和/usr/local/hadoop/dfs/data目錄,並分配777權限。

2)在hadoop初始化啟動后,在master上/usr/local/hadoop/dfs/name下會自動創建./current/VERSION文件路徑。

3)在hadoop初始化啟動后,在所有node(node1、node2)上/usr/local/hadoop/dfs/data下會自動創建./current/VERSION文件路徑。

  • 將Master虛擬機配置后的Hadoop目錄復制(拷貝,反正不是剪切)到各個子節點(Node1,Node2):

1、復制master上的hosts文件到所有節點(node1、node2)上:

hadoop@master:~/ scp /etc/hosts hadoop@node1:/ect/hosts
hadoop@master:~/ scp /etc/hosts hadoop@node2:/ect/hosts

備注:

  1)如果遇到權限文件,修改master下/etc/host權限為777(sudo chmod 777 /etc/hosts)

  2)如果修改權限后,還是拷貝失敗,請直接ssh node1(node2)去修改,把所有子節點(node1、node2)上的/etc/hosts修改與master的/etc/hosts文件內容一致。

  3)我這/etc/hosts文件內容如下:

192.168.1.200   master
192.168.1.201   node1
192.168.1.202   node2
# The following lines are desirable for IPv6 capable hosts
#::1     localhost ip6-localhost ip6-loopback
#ff02::1 ip6-allnodes
#ff02::2 ip6-allrouters

 

2、復制master上配置好的hadoop文件到所有節點(node1、node2)下:

首先,需要在各個節點(node1、node2)上創建目錄/usr/local/hadoop,並分配777權限:

hadoop@master:~/ ssh hadoop@node1
hadoop@node1:~/ mkdir /etc/local/hadoop
hadoop@node1:~/ sudo chmod 777 /etc/local/hadoop
#........
hadoop@node1:~/ exit
hadoop@master:~/ ssh hadoop@node2
hadoop@node2:~/ mkdir /etc/local/hadoop
hadoop@node2:~/ sudo chmod 777 /etc/local/hadoop
#........
hadoop@node2:~/ exit

然后,拷貝master上配置好的hadoop文件到所有節點(node1、node2)下:

hadoop@master:~/ scp -r /usr/loca/hadoop hadoop@node1:/usr/local/
hadoop@master:~/ scp -r /usr/loca/hadoop hadoop@node2:/usr/local/

最后,修改各個節點(node1、node2)/etc/profile文件,追加HADOOP_HOME.

export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export JRE_HOME=/usr/lib/jvm/java-8-oracle
export SCALA_HOME=/opt/scala/scala-2.10.5
# add hadoop bin/ directory to PATH
export HADOOP_HOME=/usr/local/hadoop

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$JAVA_HOME:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SCALA_HOME/bin:$PATH
export CLASSPATH=$CLASS_PATH::$JAVA_HOME/lib:$JAVA_HOME/jre/lib
  • 啟動及測試Hadoop集群是否配置好:

1、格式化hdfs文件系統:

以hadoop賬戶登錄master,執行命令:

hadoop namenode -format

如果有必要可以執行格式化datanode命令:

hadoop datanode -format

2、啟動hadoop:

再啟動前可以關閉所有防火牆:

service iptables stop
# 或者
ufw disable

啟動hadoop集群:

hadoop@master:~/ start-all.sh
#如果這里不識別該命令,到/usr/loca/hadoop/sbin下執行該命令。

3、測試是否安裝&啟動正常

方法一:jps命令,如果在master查看到如下幾個進程:

ssh 進入node1、node2,執行jps命令:

方法二:用hadoop dfsadmin -report命令

hadoop@master:~$ hadoop dfsadmin -report
DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it.

Configured Capacity: 37234434048 (34.68 GB)
Present Capacity: 30607450112 (28.51 GB)
DFS Remaining: 30607400960 (28.51 GB)
DFS Used: 49152 (48 KB)
DFS Used%: 0.00%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0

-------------------------------------------------
Live datanodes (2):

Name: 192.168.1.201:50010 (node1)
Hostname: node1
Decommission Status : Normal
Configured Capacity: 18617217024 (17.34 GB)
DFS Used: 24576 (24 KB)
Non DFS Used: 3238232064 (3.02 GB)
DFS Remaining: 15378960384 (14.32 GB)
DFS Used%: 0.00%
DFS Remaining%: 82.61%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Thu Sep 22 00:21:32 CST 2016


Name: 192.168.1.202:50010 (node2)
Hostname: node2
Decommission Status : Normal
Configured Capacity: 18617217024 (17.34 GB)
DFS Used: 24576 (24 KB)
Non DFS Used: 3388751872 (3.16 GB)
DFS Remaining: 15228440576 (14.18 GB)
DFS Used%: 0.00%
DFS Remaining%: 81.80%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Thu Sep 22 00:21:33 CST 2016


hadoop@master:~$

方法三:輸入http://(master ip):50070

 

 

 

  • 參考文章:

(如何驗證是否hadoop配置成功)http://blog.csdn.net/chenyuangege/article/details/45582831

(坐標類型轉化):http://api.zdoz.net/gcj2wgs.aspx?lat=34.121&lng=115.21212

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM