Hadoop系列之實驗環境搭建

實驗環境基本配置

硬件:硬盤單節點50GB,1G內存,單核。 node

操做系統:CentOS6.4 64bit linux

Hadoop:2.20 64bit(已編譯) web

JDK:jdk1.7 apache

磁盤分區: vim

/服務器

5GB網絡

/boot負載均衡

100MB框架

/usrssh

5GB

/tmp

500MB

swap

2GB

/var

1GB

/home

剩餘空間

 

Linux系統安裝配置

無桌面(Minimal)

Base SystemàBase, Compatibility libraries, Performance Tools, Perl Support

Developmentà Development Tools

LanguagesàChinese Support

 

建立Hadoop用戶

Useradd Hadoop

Passwd Hadoop

網絡配置

修改ip

vim /etc/sysconfig/network-scripts/ifcfg-eth0

保存並重啓網絡service network restart

修改主機名

Vim /etc/sysconfig/network

主機名和IP綁定

Vim /etc/host

關閉防火牆

查看狀態service iptables status

關閉防火牆service iptables stop

查看防火牆開機啓動狀態 chkconfig iptables –list

關閉防火牆開機啓動 chkconfig iptables off

關閉SELinux

Vim /etc/sysconfig/selinux

Setenforce 0

Getenforce

SSH免登錄設置

使用hadoop用戶生成公鑰和私鑰:ssh-keygen –t rsa

將受權發送給Slave1..5:ssh-copy –i Slave1

一樣,也將Slave1…5對Master進行免密登陸

爲了保證S1到Master通訊,一樣配置S1到Master免登錄

安裝JDK

將jdk1.7解壓縮到/usr/local/目錄下,並更名爲jdk

修改/etc/profile文件

主機名

IP

安裝的軟件

運行的進程

Master

172.20.52.151

jdk、hadoop

NameNode、DFSZKFailoverController

Slave1

172.20.52.171

jdk、hadoop

ResourceManager

Slave2

172.20.52.21

jdk、hadoop、

NameNode、DFSZKFailoverController

Slave3

172.20.53.37

jdk、hadoop、zookeeper

DataNode、NodeManager、JournalNode、QuorumPeerMain

Slave4

172.20.53.174

jdk、hadoop、zookeeper

DataNode、NodeManager、JournalNode、QuorumPeerMain

Slave5

172.20.53.177

jdk、hadoop、zookeeper

DataNode、NodeManager、JournalNode、QuorumPeerMain

JournalNode負責數據同步,QuorumPeerMain是zk的進程。

namenode節點上/usr/hadoop/tmp/dfs/name/current/  目錄下存放了fsimage文件,塊位置信息不會保存在fsimage中,塊位置信息並非由namenode來維護的,而是以塊列表的形式放在datanode上。

而datanode節點上/usr/hadoop/tmp/dfs/data/current/  目錄下存放了文件塊

Zookeeper的安裝

  zk用於協調管理數據節點,能夠進行master選舉,負載均衡,分佈式鎖等。

  在S3,S4,S5節點上安裝zookeeper:

  • S3上使用root用戶登陸,把zookeeper解壓到/usr/local/下:

tar -zxvf zookeeper-3.4.5.tar.gz -C /usr/local/

  • 進入到zookeeper目錄下,對它進行配置。
  • 將conf目錄下的zoo_sample.cfg重命名爲zoo.cfg:

mv zoo_sample.cfg zoo.cfg,用來zookeeper啓動時讀取

  • 在/usr/local/ zookeeper-3.4.5/data建立文件myid,寫入服務器id:1
  • 修改zoo.cfg中日誌存放路徑到/usr/local/ zookeeper-3.4.5/data(記得建立data目錄並建立myid文件),以下:

  • 在文件最後添加以下信息:

服務器ID:server.1

Zookeeper運行的主機:Slave3..5

通訊端口:2888

選舉端口:3888

 

  • 將配置好的zookeeper用scp發送給S4,S5

scp –r /usr/local/ zookeeper-3.4.5/ root@Slave4: /usr/local/ zookeeper-3.4.5/

scp –r /usr/local/ zookeeper-3.4.5/ root@Slave5: /usr/local/ zookeeper-3.4.5/

別忘了修改myid文件中的服務器號

  • 啓動三個節點的zk:

調用bin目錄下的zkServer.sh腳本命令:./ zkServer.sh start

  • 查看狀態./ zkServer.sh status

三個節點只有一個爲leader,其他爲follower

 

 

安裝hadoop

將編譯好的hadoop-2.2.0.tar.gz上傳至Master,用root用戶解壓到/usr目錄下,更名爲hadoop

  • 在hadoop目錄下建立tmp文件夾(可省略)

mkdir tmp

  • 設置hadoop目錄的全部者爲hadoop:

chown –R Hadoop:hadoop Hadoop

  • 將hadoop添加到環境變量中vim /etc/profile

其他幾個節點也如此配置。

配置hadoop

  • 配置HDFS(hadoop2.0全部的配置文件都在$HADOOP_HOME/etc/hadoop目錄下)

    export JAVA_HOME=/usr/local/jdk

    export HADOOP_HOME=/usr/hadoop

    export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

修改/usr/Hadoop/etc/Hadoop/目錄下的配置文件

  • 配置hadoop運行環境,修改hadoo-env.sh:

  • 修改core-site.xml

Hadoop.tmp.dir參數雖然稱爲臨時目錄,其實保存的是之後hdfs的數據,nameservice指定了該HDFS集羣的名稱爲ns1

  • 修改hdfs-site.xml文件

<configuration>

    <!--指定hdfs的nameservice爲ns1,須要和core-site.xml中的保持一致 -->

    <property>

        <name>dfs.nameservices</name>

        <value>ns1</value>

    </property>

    <!-- ns1下面有兩個NameNode,分別是nn1,nn2 -->

    <property>

        <name>dfs.ha.namenodes.ns1</name>

        <value>nn1,nn2</value>

    </property>

    <!-- nn1的RPC通訊地址 -->

    <property>

        <name>dfs.namenode.rpc-address.ns1.nn1</name>

        <value>Master:9000</value>

    </property>

    <!-- nn1的http通訊地址 -->

    <property>

        <name>dfs.namenode.http-address.ns1.nn1</name>

        <value>Master:50070</value>

    </property>

    <!-- nn2的RPC通訊地址 -->

    <property>

        <name>dfs.namenode.rpc-address.ns1.nn2</name>

        <value>Slave1:9000</value>

    </property>

    <!-- nn2的http通訊地址 -->

    <property>

        <name>dfs.namenode.http-address.ns1.nn2</name>

        <value>Slave1:50070</value>

    </property>

    <!-- 指定NameNode的元數據在JournalNode上的存放位置 -->

    <property>

        <name>dfs.namenode.shared.edits.dir</name>

        <value>qjournal://Slave3:8485;Slave4:8485;Slave5:8485/ns1</value>

    </property>

    <!-- 指定JournalNode在本地磁盤存放數據的位置 -->

    <property>

        <name>dfs.journalnode.edits.dir</name>

        <value>/usr/hadoop/journal</value>

    </property>

    <!-- 開啓NameNode失敗自動切換 -->

    <property>

        <name>dfs.ha.automatic-failover.enabled</name>

        <value>true</value>

    </property>

    <!-- 配置失敗自動切換實現方式 -->

    <property>

        <name>dfs.client.failover.proxy.provider.ns1</name>

        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

    </property>

    <!-- 配置隔離機制 -->

    <property>

        <name>dfs.ha.fencing.methods</name>

        <value>sshfence</value>

    </property>

    <!-- 使用隔離機制時須要ssh免登錄 -->

    <property>

        <name>dfs.ha.fencing.ssh.private-key-files</name>

        <value>/home/hadoop/.ssh/id_rsa</value>

    </property>

</configuration>

 

  • 重命名mapred-site.xml.template爲mapred-site.xml並配置以下

說明MR框架運行在yarn之上

  • 配置子節點文件:slaves

DN爲S3,S4,S5

  • 將配置好的hadoop複製到其餘節點上(root)

scp –r /usr/Hadoop/ Slave1:/usr/Hadoop/

複製後應修改權限:chown –R Hadoop:hadoop Hadoop

 

啓動hadoop

  • 啓動zookeeper:

    bin/ zkServer.sh start

  • 啓動journalnode(在Master上啓動全部journalnode)

cd /usr/hadoop

sbin/hadoop-daemons.sh start journalnode 經過ssh協議同時啓動多個進程

(運行jps命令檢驗,多了JournalNode進程)

  • 格式化HDFS

    在Master上執行命令:hadoop namenode –format

    此時將Master中tmp目錄拷貝到Slave1的/usr/Hadoop/下:

scp –r /usr/Hadoop/tmp Slave1:/usr/Hadoop/ 這裏面存放了fsimage和edits文件

  • 格式化ZK(在Master上執行):hdfs zkfc –formatZK

    此時,在S3..S5節點上的zk的bin目錄下執行./zkCli.sh命令,能夠發現多出hadoop-ha的目錄用於保存數據。

  • 啓動HDFS(在Master上執行):

sbin/start-dfs.sh

若是一個NameNode掛掉,從新啓動要使用命令sbin/Hadoop-deamon.sh start namenode,要保證兩個NameNode要ssh免密碼登陸。

  • 在Slave2上啓動yarn:sbin/start-yarn.sh                yarn的web管理界面端口爲8088

 

 

 

 

注:

關於修改虛擬機網卡

  • 修改 /etc/udev/rules.d/70-persistent-net.rules 文件 

刪除掉 關於 eth0 的信息。修改 第二條 eth1 的網卡的名字爲 eth0. 

   

  • 修改 /etc/sysconfig/network-scripts/ifcfg-eth0 中mac地址爲 /etc/udev/rules.d/70-persistent-net.rules 修改後的eth0的mac地址。
相關文章
相關標籤/搜索