1. 程式人生 > >Hadoop學習1-MacBook下Hadoop-2.9的配置

Hadoop學習1-MacBook下Hadoop-2.9的配置

MacBook下Hadoop-2.9的配置

由於研究生課程需要,今天下午搭建了本地Hadoop環境。我用的是Hadoop-2.9版本,不打算一上來就3.x(其實是因為大部分教程都是2.x, 呵呵)。
本人MacBook Pro配置是 8G記憶體,256GSSD,InterCore I5處理器。跑起來3個CentOS虛擬機器+IDEA+網易雲+有道雲筆記+QQ+微信+20個Chrome網頁不成問題,大概總佔7G的記憶體,雖然有一點點影響系統速度,可以接受。

1. 安裝VMware Fusion

由於是本地的完全分散式環境搭建,我打算在VMware Fusion中安裝3個CentOS7虛擬機器,其中一個即是namenode也是datanode,另外兩臺datanode,這樣就做到1個namenode+3個datanode。

VMware Fusion 官方下載地址

2.下載CentOS映象

在官網下載 DVD ISO 就好了,標配。

CentOS官方下載地址

3.下載Hadoop-2.9.1

下載Linux版本的Hadoop。

Hadoop下載地址

4.下載JDK1.8

jdk這裡就不用說了,去官網下載Linux版本的jdk1.8。

5.配置Hadoop環境

我們首先配置一個節點,namenode節點,然後直接把配置好的hadoop打包用ssh傳送給其他兩個節點就好了。

  • 修改主機名修改HOSTS檔案

為了方便區分,我們用 hostname xxx 命令重設主機名,我三臺虛擬機器分別名為namenode、datanode1、datanode2。

  • 修改Hosts檔案
sudo vi /etc/hosts

加上三臺虛擬機器,三個虛擬機器做同樣的操作,注意ip地址換成自己虛擬機器的,不知道可以用ifconfig命令檢視。

192.168.246.128    namenode
192.168.246.129    datanode1
192.168.246.130    datanode2
  • JDK配置

Linux下JDK的配置我就不用說了,首先配置好JDK,環境變數JAVA_HOME配置好。

export JAVA_HOME=/opt/Java/jdk1.8.0_181
export PATH=
$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  • Hadoop配置

解壓Hadoop到/opt/hadoop,新增環境變數HADOOP_HOME:

export HADOOP_HOME=/opt/hadoop/hadoop-2.9.1
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

進入Hadoop配置檔案目錄。

cd /opt/hadoop/hadoop-2.9.1/etc/hadoop

會看到很多xml配置檔案和shell指令碼檔案

-rw-r--r--. 1 root root  7861 4月  16 19:52 capacity-scheduler.xml
-rw-r--r--. 1 root root  1335 4月  16 19:52 configuration.xsl
-rw-r--r--. 1 root root  1211 4月  16 19:52 container-executor.cfg
-rw-r--r--. 1 root root   996 9月  24 17:12 core-site.xml
-rw-r--r--. 1 root root  4133 4月  16 19:52 hadoop-env.cmd
-rw-r--r--. 1 root root  4980 9月  24 19:25 hadoop-env.sh
-rw-r--r--. 1 root root  2598 4月  16 19:52 hadoop-metrics2.properties
-rw-r--r--. 1 root root  2490 4月  16 19:52 hadoop-metrics.properties
-rw-r--r--. 1 root root 10206 4月  16 19:52 hadoop-policy.xml
-rw-r--r--. 1 root root  1378 9月  24 17:07 hdfs-site.xml
-rw-r--r--. 1 root root  2230 4月  16 19:52 httpfs-env.sh
-rw-r--r--. 1 root root  1657 4月  16 19:52 httpfs-log4j.properties
-rw-r--r--. 1 root root    21 4月  16 19:52 httpfs-signature.secret
-rw-r--r--. 1 root root   620 4月  16 19:52 httpfs-site.xml
-rw-r--r--. 1 root root  3518 4月  16 19:52 kms-acls.xml
-rw-r--r--. 1 root root  3139 4月  16 19:52 kms-env.sh
-rw-r--r--. 1 root root  1788 4月  16 19:52 kms-log4j.properties
-rw-r--r--. 1 root root  5939 4月  16 19:52 kms-site.xml
-rw-r--r--. 1 root root 14016 4月  16 19:52 log4j.properties
-rw-r--r--. 1 root root  1076 4月  16 19:52 mapred-env.cmd
-rw-r--r--. 1 root root  1507 4月  16 19:52 mapred-env.sh
-rw-r--r--. 1 root root  4113 4月  16 19:52 mapred-queues.xml.template
-rw-r--r--. 1 root root   856 9月  24 15:42 mapred-site.xml
-rw-r--r--. 1 root root    29 9月  24 16:14 slaves
-rw-r--r--. 1 root root  2316 4月  16 19:52 ssl-client.xml.example
-rw-r--r--. 1 root root  2697 4月  16 19:52 ssl-server.xml.example
-rw-r--r--. 1 root root  2250 4月  16 19:52 yarn-env.cmd
-rw-r--r--. 1 root root  4876 4月  16 19:52 yarn-env.sh
-rw-r--r--. 1 root root  1475 9月  24 19:48 yarn-site.xml
  • 配置 hadoop-env.sh

這裡暫時只要修改一個地方

export JAVA_HOME=${JAVA_HOME} 改成絕對路徑 export JAVA_HOME=/opt/Java/jdk1.8.0_181/

不知道為什麼,如果不改的話,hadoop是讀取不到變數JAVA_HOME的。

  • 配置core-site.xml
<configuration>
    <!--配置分散式儲存系統,HDFS-->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://namenode:9000/</value>
    </property>

    <!--配置hdoop臨時檔案儲存目錄-->    
     <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/hadoop/hadoop-2.9.1/data/</value>
    </property>
</configuration>
  • 配置hdfs-site.xml
<configuration>
   
   <!--在hdfs中,每個檔案塊有多少個拷貝-->    
   <property>
      <name>dfs.replication</name>
      <value>3</value>
   </property>
    
   <!--取消許可權-->
   <property>
      <name>dfs.permissions</name>
      <value>false</value>
   </property>

  <!--namenode資料的儲存位置-->
   <property>
      <name>dfs.namenode.data.dir</name>
      <value>/opt/hadoop/namenode</value>
   </property>
 <!--因為這臺機器即是namenode也是datanode,所以也要配置datanode資料路徑-->
   <property>
      <name>dfs.datanode.data.dir</name>
      <value>/opt/hadoop/datanode</value>
   </property>
     
    <!--配置網頁管理hdfs的url--> 
    <property>
            <name>dfs.http.address</name>
            <value>namenode:50070</value>
    </property>
  
    <property>
            <name>dfs.datanode.http.address</name>
            <value>namenode:50075</value>
    </property>
</configuration>
  • 配置mapred-site.xml
<configuration>
    <!--配置資源排程器yarn-->
   <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
   </property>
</configuration>
  • 配置yarn-site.xml
<configuration>

<!-- 配置資源排程器yarn的所在主機名 -->
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>namenode</value>
        </property>
<!--配置nodeManager管理方式-->
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>
  • 配置slavers
namenode
datanode1
datanode2

配置結束後,將hadoop安裝目錄整個打包,scp到其他兩個虛擬機器,在那裡直接解壓就好。

6.配置ssh無密碼登陸

在namenode機器機器中,執行

ssh-keygen -t rsa

會在~/.ssh中生成一對公私鑰。

#ls ~/.ssh/ 
authorized_keys  id_rsa  id_rsa.pub  known_hosts

將整個.ssh目錄scp傳送到另外兩個機器的~/下

scp ~/.ssh/ [email protected]:~/ 
scp ~/.ssh/ [email protected]:~/ 

現在你的namenode可以用ssh命令無密碼的登陸到另外兩個虛擬機器的root使用者了。

6.初始化namenode

注意上面的hadoop的環境變數一定要配。
在namenode那臺機器上,用hadoop namenode -format命令初始化

開啟你的所有節點:start-all.sh

在 namenode下用 jps命令檢視開啟的節點。

3476 SecondaryNameNode
3176 NameNode
3756 NodeManager
3629 ResourceManager
3310 DataNode
5118 Jps

如果以上6個節點全部開啟,說明完全分散式hadoop配置成功嘍~~~開森~~~