小型大數據平臺搭建

目錄java

前言node

1、 搭建環境mysql

1.1集羣規劃linux

2、 集羣的相關配置web

2.1 新建用戶hadoopsql

2.2 更改主機名shell

2.3 主機和IP作相關映射數據庫

2.4 SSH免密碼登陸apache

2.5 時間配置bootstrap

2.6 總體安裝目錄安排

3、 Hadoop HA環境搭建

3.1 JDK配置

3.2 安裝配置Zookeeper集羣

3.3 安裝配置hadoop HA集羣

4、 Hive+MySQL 的安裝與配置

4.1 Hive的安裝部署

4.2 MySQL數據庫安裝配置

4.3 修改hive-site.xml

4.4 拷貝mysql驅動包到hive的lib目錄下

5、 HBase徹底分佈式集羣搭建

5.1 解壓安裝

5.2 修改hbase-site.xml

5.3 修改regionserver

5.4 將Hbase目錄分發到其餘節點

5.5 啓動進程

6、 Flume安裝部署

6.1 解壓安裝

6.2 修改flume-env.sh

6.3 配置文件拷貝

7、 Kafka安裝部署

7.1 安裝Scala

7.2 解壓安裝Kafka

7.3 修改配置文件

7.4 啓動服務

8、 Sqoop安裝部署

8.1 解壓Sqoop

8.2 修改sqoop-env.sh

8.3 導入MySQL驅動包

8.4 測試鏈接數據庫

 

前言

搭建基於CDH Hadoop高可用性的集羣,主要框架有:HDFS HA、YARN HA、Zookeeper、HBase HA、Mysql、Hive、Sqoop、Flume-ng、kafka、安裝,可用於批量數據的收集、轉換、清洗、分析、存儲、查詢。

相關軟件:

下載地址:http://archive-primary.cloudera.com/cdh5/cdh/5/

 

一 搭建環境

    1.1集羣規劃

主機名

IP

安裝軟件

運行的節點

hadoop01

192.168.60.121

JDK、Hadoop

NameNode、

DFSZKFailoverController、

JournalNode、

hadoop02

192.168.60.122

JDK、Hadoop、Flume

NameNode、

DFSZKFailoverController、

JournalNode、

hadoop03

192.168.60.123

JDK、Hadoop、Kafka、Flume

ResourceManager、

JournalNode、

Kafka

hadoop04

192.168.60.124

JDK、Hadoop、Kafka、Flume

ResourceManager、

DataNode

Kafka

hadoop05

192.168.60.125

JDK、Hadoop、zookeeper、HBase、Kafka、Flume

DataNode、

NodeManager、

QuorumPeerMain、

HMaster、HRegionServer、

Kafka

hadoop06

192.168.60.126

JDK、Hadoop、zookeeper、HBase、Flume

DataNode、

NodeManager、

QuorumPeerMain、

HMaster、HRegionServer

hadoop07

192.168.60.127

JDK、Hadoop、zookeeper、HBase、Hive、MySQL、Sqoop

DataNode、

NodeManager 、

QuorumPeerMain、

HRegionServer、

Runjar

說明:

一、本次搭建,安排了兩個NameNode節點,分別是一、2號機,兩臺NameNode,一臺處於active狀態,另外一臺處於standby狀態。ActiveNameNode對外提供服務,Standby NameNode不對外提供服務,僅同步active namenode狀態,以便可以在它失敗時進行快速切換。

二、Hadoop 官方提供了兩種 HDFSHA的解決方案,一種是NFS,另外一種是QJM。在本次搭建中,使用QJK,主備NameNode經過JournalNode同步數據,只要成功寫入多數JournalNode即認爲寫入成功,因此要配置奇數個JournalNode,咱們配置了3個。

三、本次搭建上,配置了2個ResourceManager,一個是Active,一個是Standby,狀態由zookeeper進行協調

2、集羣的相關配置

    2.1 新建用戶hadoop

在7臺機器都新建hadoop的用戶名,都以這個普通用戶的權限進行操做,設置一樣的口令

adduser hadoop

給用戶hadoop設置sudo權限

vi /etc/sudoers

        hadoop    ALL=(ALL)       ALL

2.2 更改主機名

集羣全部的機器都要作這個操做。

輸入 vim /etc/sysconfig/network

修改localhost.localdomain主機名稱,每臺名稱都不同

例如:  HOSTNAME=hadoop01/2/3/4/5/6/7/

注: 名稱更改了以後輸入reboot重啓纔會生效。

2.3 主機和IP作相關映射

    在01機器上操做,設置好無密碼登陸後,scp到其它6臺機器上

        vim /etc/hosts

    添加全部主機映射

        192.168.60.121  hadoop01   

        192.168.60.122  hadoop02

        192.168.60.123  hadoop03

        192.168.60.124  hadoop04

        192.168.60.125  hadoop05

        192.168.60.126  hadoop06

        192.168.60.127  hadoop07

 

2.4 SSH免密碼登陸

首先在每臺機器上都執行一遍生成祕鑰文件 

輸入:ssh-keygen -t rsa

而後分別將hadoop0一、hadoop0二、hadoop0三、hadoop0四、hadoop0五、hadoop0六、hadoop07的公匙發送到hadoop01上,在hadoop01上的實現免密碼登錄。

    hadoop01上操做:ssh-coyp-id hadoop01

hadoop02上操做:ssh-coyp-id hadoop01

hadoop03上操做:ssh-coyp-id hadoop01

hadoop04上操做:ssh-coyp-id hadoop01

hadoop05上操做:ssh-coyp-id hadoop01 

hadoop06上操做:ssh-coyp-id hadoop01

hadoop07上操做:ssh-coyp-id hadoop01

 

而後將hadoop01目錄./.ssh下的authorized_keys文件scp到其餘機器的 /root/.ssh 目錄下

scp authorized_keys  Hadoop02:/home/hadoop/.ssh

scp authorized_keys  Hadoop03:/home/hadoop/.ssh

scp authorized_keys  Hadoop04:/home/hadoop/.ssh

scp authorized_keys  Hadoop05:/home/hadoop/.ssh

scp authorized_keys  Hadoop06:/home/hadoop/.ssh

scp authorized_keys  Hadoop07:/home/hadoop/.ssh

2.5 時間配置

    本次搭建以hadoop01主機的時鐘爲準,hadoop01主機開通ntpd服務

     查看當前系統ntpd服務是否開啓:$ sudo service ntpd status

     開啓服務:$ sudo service ntpd start

     設置開機啓動:$ sudo chkconfig ntpd on

     修改系統配置文件

$ sudo vi /etc/ntp.conf

第一處修改:修改爲本身的網段

Restrict 192.168.60.121 mask 255.255.255.0 nomodify notrap

第二次修改:模擬內網環境,不須要連外網,註釋掉下面參數

第三次修改:將本地服務註釋去掉

修改完保存退出,重啓ntpd服務生效

$ sudo service ntpd restart

            每臺機器都編寫一個crontab定時任務,每十分鐘執行一次

                0-59/10 * * * * /usr/sbin/ntpdate hadoop01

2.6 總體安裝目錄安排

     全部配置框架都安裝在~/opt/modules/目錄下

3、Hadoop HA環境搭建

3.1 JDK配置

   在01機解壓JDK安裝包

   $ tar –zxvf home/hadoop/opt/software/jdk-7u80-linux-x64.tar.gz –C home/hadoop/opt/modules

   配置JAVA_HOME

   $ sudo vi /etc/profile

   export JAVA_HOME=/home/hadoop/opt/modules/jdk1.7.0_80

   $ sudo source /etc/profile

3.2 安裝配置Zookeeper集羣

   先再hadoop05機器上操做

   解壓Zookeeper到目錄/opt/modules/下

   修改zoo.cfg文件

        指定本地數據存儲目錄:dataDir=/home/hadoop/opt/modules/zookeeper-3.4.5/data/zkData

        指定全部ZK節點服務端的實例

servier.5=hadoop05:2888:3888

servier.6=hadoop06:2888:3888

servier.7=hadoop07:2888:3888

        在/opt/modules/zookeeper-3.4.5/data/zkData下vi myid文件,寫1,保存退出

將配置文件分發到其餘節點

$ scp –r zookeeper-3.4.5/ hadoop06:/opt/modules/

$ scp –r zookeeper-3.4.5/ hadoop07:/opt/modules/

在06和07機器上修改分發好的myid文件,改爲對應的編號:06對應6,07對應7

啓動: $ bin/zkServer.sh start

查看狀態: $ bin/zkServier.sh status

3.3 安裝配置hadoop HA集羣(在1號機上操做)

3.3.一、解壓hadoop安裝包到目錄/opt/modules/下 (所機器所有統一這個目錄)

3.3.二、指定JAVA_HOME目錄

進入hadoop的配置目錄/home/hadoop/hadoop-2.5.0/etc/hadoop

編輯hadoop-env.sh,指定JAVA_HOME目錄

export JAVA_HOME=/home/hadoop/opt/modules/jdk1.7.0_80

3.3.3 編輯core-site.xml

<!-- Put site-specific propertyoverrides in this file. -->

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://ns1/</value>

 </property>

<property>

 <name>hadoop.tmp.dir</name>

 <value>/home/hadoop/opt/modules/hadoop-2.5.0/tmp</value>

</property>

<property>

<name>ha.zookeeper.quorum</name>

<value>hadoop05:2181,hadoop06:2181,hadoop07:2181</value>

</property>

</configuration>

  3.3.4 編輯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>

<!—指定兩個namenode的RPC通訊地址 -->

<property>

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

<value>hadoop01:9000</value>

</property>

<property>

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

<value>hadoop02:9000</value>

</property>

<!--指定兩個namenode的http通訊地址 -->

<property>

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

<value>hadoop01:50070</value>

</property>

<property>

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

<value>hadoop02:50070</value>

</property>

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

<property>

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

  <value>qjournal://hadoop01:8485;node02:8485;node03:8485/ns1</value>

</property>

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

<property>

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

  <value>/home/hadoop/opt/modules/hadoop-2.5.0/journaldata</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>

<!--配置隔離機制方法,本次使用SSH-->

<property>

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

  <value>sshfence shell(/bin/true)</value>

</property>

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

<property>

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

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

</property>

<!--配置sshfence隔離機制超時時間 -->

<property>

  <name>dfs.ha.fencing.ssh.connect-timeout</name>

  <value>30000</value>

</property>

</configuration>

  3.3.5  編輯mapred-site.xml

<configuration>

<property>

    <name>mapreduce.framework.name</name>

    <value>yarn</value>

</property>

<property>

    <name>mapreduce.jobhistory.address</name>

    <value>hadoop01:10020</value>

</property>

<property>

    <name>mapreduce.jobhistory.webapp.address</name>

    <value>hadoop01:19888</value>

</property>

<property>

    <name>mapred.map.tasks</name>

    <value>10</value>

</property>

<property>

    <name>mapred.reduce.tasks</name>

    <value>2</value>

</property>

</configuration>

 3.3.6  編輯 yarn-site.xml

<configuration>

<property>

     <name>yarn.nodemanager.aux-services</name>

     <value>mapreduce_shuffle</value>

</property>

<property>

     <name>yarn.resourcemanager.hostname.rm1</name>

     <value>hadoop03</value>

</property>

<property>

     <name>yarn.resourcemanager.hostname.rm2</name>

     <value>hadoop04</value>

</property>

<property>

     <name>yarn.resourcemanager.ha.enabled</name>

     <value>true</value>

</property>

<property>

     <name>yarn.resourcemanager.cluster-id</name>

     <value>yrc</value>

</property>

<property>

     <name>yarn.resourcemanager.ha.rm-ids</name>

     <value>rm1,rm2</value>

</property>

<property>

     <name>yarn.resourcemanager.zk-address</name>

     <value>hadoop05:2181,hadoop06:2181,hadoop07:2181</value>

</property>

</configuration>

    3.3.7 修改slaves

[hadoop01]$ cat slaves

node05

node06

node07

[hadoop03]$ cat slaves

node05

node06

node07

    3.3.八、將配置好的hadoop拷貝到其它節點

scp -r opt/modules/hadoop hadoop02:opt/modules/hadoop

scp -r opt/modules/hadoop hadoop03:opt/modules/hadoop

其它幾個節點相似

同時也要把 /etc/profile   /etc/hosts 兩個文件複製到全部節點機上

    3.3.九、 先啓動0五、0六、07節點zookeeper

            $ bin/zkServer.sh start

    3.3.十、 再啓動0一、0二、03節點的JournalNode

            $ sbin/hadoop-daemon.sh start journalnode

    3.3.11 hadoop格式化

            在01號上執行 bin/hdfs namenode –format

    3.3.12  同步元數據

啓動01機器的namenode

切換到02機器上執行元數據同步

                $ bin/hdfs namenode –bootstrapStandby

    3.3.13  初始化ZKFC

        先停掉兩臺namenode服務進程,執行

        $ bin/hdfs zkfc –formatZK

        進入ZK客戶端,檢查是否生成了hadoop-ha的節點目錄

    3.3.13  啓動ZKFC監聽器

        在兩臺namenode所在的機器上分別啓動ZKFC監聽器

        $ sbin/hadoop-daemon.sh start zkfc

       3.3.14   測試

              UI頁面查看

              上傳產品到HDFS測試

              運行WordCount測試

4、 Hive + MySQL 的安裝與配置

    4.1 Hive的安裝部署 (在07機器上)

        4.1.1 解壓安裝Hive到/opt/modules/目錄下

             tart –zxvf hive-0.13.1-cdh5.3.6.tar.gz –C ~/opt/modules

        4.1.2  配置Hive數據存儲目錄

            bin/hdfs dfs –mkdir /tmp

            bin/hdfs dfs –mkdir /uer/hive/warehouse

            bin/hdfs dfs –chmod g+w /tmp

            bin/hdfs dfs –chmod g+w /user/hive/warehouse

        4.1.3   修改hive-env.sh

            # Set HADOOP_HOME

            HADOOP_HOME=/opt/modules/hadoop-2.5.0

            # Hive Configuration Directory

            export HIVE_CONF_DIR=/opt/modules/hive-0.13.1-bin/conf

        4.1.4   啓動Hive

            $ bin/hive

    4.2 MySQL數據庫安裝配置

        4.2.1 安裝mysql (在07機器上)

查詢系統中是否存在MySQL

$ sudo rpm –qa|grep mysql

卸載自帶MySQL

$ sudo rpem –e –nodeps ……

yum安裝MySQL

$ sudo yum –y insall mysql-server

查看MySQL是否開啓

$ sudo service mysqld status

啓動服務

$ sudo service mysqld start

設置開機啓動MySQL

$ sudo chkconfig mysqld on

4.2.2   設置MySQL管理員root的密碼

mysqladmin –u root passward `123456`

進入mysql –uroot –p

4.2.3   設置MySQL連接的權限

在mysql數據庫user表中插入一條數據

                GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 123456 WITH GRANT OPTION;

刪除表中的信息

delect from user where host=`127.0.0.1`

delect from user where host=`hadoop07`

delect from user where host=`localhost`

刷新並退出MySQL

flush privileges;

quit

sudo service mysqld restart

4.3 修改hive-site.xml

<propery>

<name>javax.jdo.option.ConnectionURL</name>

<value>jdbc:mysql://beifeng07:3306/metastore?createDateIfNotExist=true</value>

</propery>

 

<propery>

<name>javax.jdo.option.ConnectionDriverName</name>

<value>con.mysql.jdbc.Driver</value>

</propery>

 

<propery>

<name>javax.jdo.option.ConnectionUserName</name>

<value>root</value>

</propery>

 

<propery>

<name>javax.jdo.option.ConnectionPassword</name>

<value>123456</value>

</propery>

4.4 拷貝mysql驅動包到hive的lib目錄下

$ cp –r mysql-connector-java-5.1.27-bin.jar /opt/modules/hive-0.13.1-bin/lib/

 

五  HBase徹底分佈式集羣搭建

        5.1 解壓安裝 (先在05機器上操做)

            $ tar –zxvf hbase-0.98.6-cdh5.3.5.tar.gz –C ~/opt/modules/

        5.2 修改hbase-site.xml

<propery>

<name>hbase.tmp.dir</name>

<value>/opt/modules/hbase-0.98.6-hadoop2/data/tmp</value>

            </propery>

<propery>

<name>hbase.rootdir</name>

<value>hdfs://hadoop05:8020/hbase</value>

            </propery>

 

<propery>

<name>hbase.cluster.distributed</name>

<value>true</value>

            </propery>

 

<propery>

<name>hbase.zookeeper.quorum</name>

<value>hadoop05,hadoop06,hadoop07</value>

            </propery>

        5.3 修改regionserver,添加

            hadoop05

            hadoop06

            hadoop07

5.4 將Hbase目錄分發到其餘節點

$ scp –r hbase-0.98.6-hadoop2/ hadoop06:/opt/modules/

$ scp –r hbase-0.98.6-hadoop2/ hadoop07:/opt/modules/

5.5 啓動進程

    5.5.1 分別啓動hadoop各節點和zookeeper各節點

    5.5.2 啓動hadoop05和hadoop06機器Hmaseter

    $ bin/hbase-daemon.sh start master

啓動hadoop0五、hadoop0六、hadoop07機器HregionServer

    $ bin/hbase-daemon.sh start regionserver

六  Flume安裝部署

分別在hadoop0二、hadoop0三、hadoop0四、hadoop0五、hadoop06機器上操做

6.1 解壓安裝包到/opt/modules/目錄下

    $ tar –zxvf flume-ng-1.5.0-cdh5.3.6-src.tar.gz –C ~/opt/modules/

6.2 修改flume-env.sh

    export JAVA_HOME=/home/hadoop/opt/modules/jdk1.7.0_80

6.3 配置文件拷貝

    將hadoop的core-site.xml和hdfs-site.xml文件拷貝到flume/conf下

可經過5臺機器部署扇出或扇入、高可用性操做

 

七  Kafka安裝部署

        在hadoop0三、hadoop0四、hadoop05機器上操做

7.1 安裝Scala

7.2 解壓安裝Kafka

    $ tar –zxf kafka_2.11-0.8.2.1.tgz –C ~/opt/modules/

7.3 修改配置文件

    hadoop03上配置文件爲 server3.properties,自定義配置以下

        broker.id=3

            port=9093

    zookeeper.connect=hadoop03:2181,hadoop04:2181,hadoop05:2181/kafka

    hadoop04上配置文件爲 server4.properties,自定義配置以下

        broker.id=4

            port=9094

    zookeeper.connect=hadoop03:2181,hadoop04:2181,hadoop05:2181/kafka

hadoop05上配置文件爲 server5.properties,自定義配置以下

        broker.id=5

            port=9095

    zookeeper.connect=hadoop03:2181,hadoop04:2181,hadoop05:2181/kafka

7.4 啓動服務

    先啓動各zk服務

    $ bin/zkServer.sh start

    再啓動kafka服務

    $ bin/kafka-server-start.sh

八   Sqoop安裝部署

8.1 解壓Sqoop (在hadoop07主機上)

                         tar –zxf sqoop-1.4.5-cdh5.3.6.tar.gz –C ~/opt/modules/

8.2 修改sqoop-env.sh

           指定各框架安裝目錄

           export HADOOP_COMMON_HOME=

export HADOOP_MAPRED_HOME=

export HIVE_HOME=

export HBASE_HOME=

……

8.3 導入MySQL驅動包

           將MySQL驅動包放到sqoop的lib目錄下

8.4 測試鏈接數據庫

           bin/sqoop \

list-tables \

--connect jdbc:mysql://hadoop07:3306/metastore \

--username root \

--password 123456

相關文章
相關標籤/搜索