Hadoop+Hive+HBase+Kylin 安裝指南(2018年5月更新)

操作系統(tǒng)

因?yàn)楣镜姆?wù)器上用的RedHat Linux 6,所以本安裝指南也是基于RedHat完成的,但是其它版本,如Ubuntu、CentOS等也可參考,無本質(zhì)上的差異。

服務(wù)器集群

本次測(cè)試環(huán)境只有3臺(tái)服務(wù)器,所以一臺(tái)做主結(jié)點(diǎn),另外兩臺(tái)做數(shù)據(jù)結(jié)點(diǎn)。

軟件版本

2018年1月完成的本次安裝,所以使用的軟件版本如下所示,選用的均是穩(wěn)定版本。

  • jdk-8u144-linux-x64.rpm
  • hadoop-2.7.4.tar.gz
  • hbase-1.2.6-bin.tar.gz
  • apache-hive-1.2.2-bin.tar.gz
  • zookeeper-3.4.10.tar.gz
  • apache-kylin-2.2.0-bin-hbase1x.tar.gz

一般情況下,我們都是在一臺(tái)服務(wù)器上做完hadoop,zookeeper,hbase等的配置,然后拷貝到集群里另外的服務(wù)器上直接使用。有的情況配置稍作一點(diǎn)修改,請(qǐng)大家注意。更多我的文字可以到:數(shù)圈兒進(jìn)一步關(guān)注。

操作步驟

1. 集群服務(wù)器系統(tǒng)環(huán)境準(zhǔn)備

1.1 修改主機(jī)名,方便通過主機(jī)名進(jìn)行網(wǎng)絡(luò)互通
為了操作方便,先給3臺(tái)服務(wù)器起個(gè)名字。linux修改主機(jī)名的方法如下:
hostname命令可以臨時(shí)修改機(jī)器名,但機(jī)器重新啟動(dòng)之后就會(huì)恢復(fù)原來的值。

hostname     //查看機(jī)器名
hostname -i  //查看本機(jī)器名對(duì)應(yīng)的ip地址

1.2 另外一種方法就是修改“/etc/hosts”這個(gè)文件
系統(tǒng)重啟后仍然有效,所以我們采用這個(gè)方法修改3臺(tái)服務(wù)器的主機(jī)名

修改/etc/hosts文件,對(duì)于統(tǒng)本身用到主機(jī)名的地方不會(huì)變化。這是因?yàn)閔osts 是網(wǎng)絡(luò)中用的,解決的是類似DNS的問題。/etc/sysconfig/network是本機(jī)自己使用的。
詳細(xì)可參考:https://blog.csdn.net/trochiluses/article/details/11483591

我的hosts文件示例:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

172.20.10.40 BI01
172.20.10.41 BI02
172.20.10.42 BI03

這里3臺(tái)服務(wù)器分別取名為BI01,BI02和BI03.

1.3 RedHat配置本地Yum倉庫
公司服務(wù)器上RedHat是安裝的Basic Server版本,大量常用軟件沒有安裝。同事把安裝光盤掛載到了服務(wù)器上,這里是創(chuàng)建一個(gè)本地的倉庫指向光盤,方便快速的安裝需要的軟件
詳細(xì)參考:http://www.runoob.com/linux/linux-yum.html

具體按照如下步驟進(jìn)行:
步驟一:將RHEL6光盤手動(dòng)掛載到/media

[root@localhost ~]# mount /dev/cdrom /media/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# mount | tail -1
/dev/sr0 on /media type iso9660 (ro)

步驟二:將本地設(shè)置為客戶端,進(jìn)行Yum驗(yàn)證
命令操作如下所示:

[root@localhost ~]# cd /etc/yum.repos.d/         //必須在這個(gè)路徑下
[root@localhost yum.repos.d]# ls                  //此路徑下事先有配置文件的模板
rhel-source.repo

[root@localhost yum.repos.d]# cp rhel-source.repo rhel6.repo //配置文件必須以.repo結(jié)尾
[root@localhost yum.repos.d]# vim rhel6.repo
[rhel-6]                                  //括號(hào)里的ID要求唯一,但不要出現(xiàn)特殊字符
name=Red Hat Enterprise Linux 6           //描述信息,可以看情況填寫
baseurl=file:///media/                   //yum軟件倉庫位置,指向光盤掛載點(diǎn)
enabled=1                                //是否開啟,1為開啟,0為不開啟
gpgcheck=1                               //是否檢查簽名,1為監(jiān)測(cè),0為不檢測(cè)
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release   //簽名認(rèn)證信息的路徑

步驟三:加載上一個(gè)步驟中新建的倉庫

[root@localhost /]# yum repolist
Loaded plugins: product-id, refresh-packagekit, security, subscription-manager
This system is not registered to Red Hat Subscription Management SinanWu. You can use subscription-manager to register.
rhel-6                                            | 3.9 kB     00:00 ... 
rhel-6/primary_db                                 | 3.1 MB     00:00 ... 
repo id             repo name                                     status
rhel-6              Red Hat Enterprise Linux 6                    3,690
repolist: 3,690

我的實(shí)際操作如下:

[root@BI01 ~]# ls /apps/cdrom/
[root@BI01 yum.repos.d]# vi rhel-local.repo
[rhel-local]
name=Red Hat Enterprise Linux $releasever - $basearch - Local
baseurl=file:///apps/cdrom/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

1.4 安裝缺失的vim,ssh client等軟件

[root@BI01 /]# yum -y install vim
[root@BI01 /]# yum -y install openssh-clients

1.5 安裝JDK 8
上傳JDK,使用yum本地安裝進(jìn)行

[root@BI02 downloads]# yum localinstall jdk-8u144-linux-x64.rpm

1.6 新建大數(shù)據(jù)平臺(tái)用戶
不推薦使用root用戶來進(jìn)行安裝,我們需要為整個(gè)大數(shù)據(jù)平臺(tái)創(chuàng)建獨(dú)立的用戶
RedHat下使用命令:

[root@BI01 downloads]# groupadd bigdata
[root@BI03 downloads]# useradd -g bigdata bdp

詳細(xì)參考:http://www.cnblogs.com/clicli/p/5943788.html

1.7 RadHat為普通用戶添加sudo權(quán)限
對(duì)sudoers的修改需要root權(quán)限,因此先登錄root用戶:

su - root

sudoers文件默認(rèn)是只讀的,所以要先修改一下它的權(quán)限:

chmod u+w /etc/sudoers

使用vi修改sudoers文件

vi /etc/sudoers

找到如下這行:
root ALL=(ALL) ALL
如果你的用戶名是bigdata,那么在上面這行的下面增加如下內(nèi)容:
bigdata ALL=(ALL) ALL
從vi中保存退出,再將sudeors文件的權(quán)限修改回來:

chmod u-w /etc/sudoers

最后就是退出shell,再重新登錄。修改完成后一定記得檢查語法:

visudo -c

確保/etc/sudoers默認(rèn)的權(quán)限是440(防止權(quán)限誤用)

1.8 SSH免密碼設(shè)置
因?yàn)榧憾嗯_(tái)服務(wù)器之間需要協(xié)同工作,原理就是執(zhí)行腳本的時(shí)候,有時(shí)候要遠(yuǎn)程執(zhí)行其他服務(wù)器上的命令,說白了就是ssh過去,執(zhí)行相應(yīng)命令。但是建立ssh連接是需要口令的,為了能讓服務(wù)器之間免密碼登錄,就需要利用公鑰體系做一個(gè)授權(quán)。

這個(gè)網(wǎng)上有很多資料和說明,百度“ssh 免密”
詳細(xì)可參考:https://blog.csdn.net/universe_hao/article/details/52296811

步驟一:每個(gè)服務(wù)器上運(yùn)行命令產(chǎn)生pub key

ssh-keygen -t rsa   //一路回車就好

步驟二:每個(gè)服務(wù)器上把自己pub key拷貝到其它的機(jī)器上,包括自己本機(jī)

ssh-copy-id -i ~/.ssh/id_rsa.pub BI01
ssh-copy-id -i ~/.ssh/id_rsa.pub BI02
ssh-copy-id -i ~/.ssh/id_rsa.pub BI03

2.Hadoop安裝

其實(shí)網(wǎng)上已經(jīng)有很多hadoop集群安裝的帖子,但還是會(huì)碰到一些新問題,大家可以先閱讀下的兩篇帖子。我把我實(shí)際安裝的時(shí)候記錄在后面作為補(bǔ)充
超詳細(xì)從零記錄Hadoop2.7.3完全分布式集群部署過程
http://blog.csdn.net/dream_an/article/details/52946840
補(bǔ)充材料:hadoop-2.6.0+zookeeper-3.4.6+hbase-1.0.0+hive-1.1.0完全分布式集群HA部署
http://www.aboutyun.com/forum.php?mod=viewthread&tid=13679

所有安裝包解壓到一個(gè)目錄下面,例如我的是:/home/bdp/opt/

[bdp@BI01 opt]$ ls -al
total 48
drwxr-xr-x. 12 bdp bigdata 4096 Dec  1 15:12 .
drwx------. 10 bdp bigdata 4096 May 17 14:39 ..
drwxr-xr-x. 12 bdp bigdata 4096 Nov 20 13:10 hadoop-2.7.4
drwxr-xr-x.  9 bdp bigdata 4096 Nov 30 09:05 hbase-1.2.6
drwxr-xr-x. 11 bdp bigdata 4096 Nov 10  2017 hive-1.2.2
drwxr-xr-x. 15 bdp bigdata 4096 Aug 31  2017 impala-2.10.0
drwxr-xr-x. 12 bdp bigdata 4096 Jan  2 14:37 kylin-2.2.0
drwxr-xr-x. 12 bdp bigdata 4096 Nov 17 17:38 zookeeper-3.4.10

2.1 配置環(huán)境變量

[bdp@BI01 opt]$ vim ~/.bash_profile

該文件的最終配置如下:

#JDK
export JAVA_HOME="/usr/java/jdk1.8.0_144"

#Hadoop env
export HADOOP_HOME="/home/bdp/opt/hadoop-2.7.4"
export HIVE_HOME="/home/bdp/opt/hive-1.2.2"
export HBASE_HOME="/home/bdp/opt/hbase-1.2.6"
export KYLIN_HOME="/home/bdp/opt/kylin-2.2.0"
export PATH="$HADOOP_HOME/bin:$HIVE_HOME/bin:$HBASE_HOME/bin:$PATH"
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop

執(zhí)行下面命令,讓改動(dòng)馬上生效

source ~/.bash_profile

2.2 在主結(jié)點(diǎn)上(BI01),配置/home/bdp/opt/hadoop-2.7.4/etc/hadoop/slaves文件,增加slave主機(jī)名。
注意要把localhost刪掉

BI02          
BI03          

2.3 配置 etc/hadoop/core-site.xml
這里就粘貼的是最終優(yōu)化后的結(jié)果,有些參數(shù)可能還不是太合理,但至少對(duì)于上千萬條的數(shù)據(jù)最后是跑過了。資源分配的參數(shù),大家需要針對(duì)自己服務(wù)器的CPU核數(shù)和內(nèi)存容量進(jìn)行修改,不能直接copy。對(duì)于初學(xué)者,很多配置項(xiàng)還不理解它的作用,這里主要講安裝就不進(jìn)行詳解了,可以自行搜索一下,有很多資料介紹的。

<configuration>
        <!-- 指定hdfs的nameservice為ns1 -->
        <property>
              <name>fs.defaultFS</name>
              <value>hdfs://BI01:9000</value>
        </property>
        <!-- Size of read/write buffer used in SequenceFiles. -->
        <property>
              <name>io.file.buffer.size</name>
              <value>131072</value>
        </property>
        <!-- 指定hadoop臨時(shí)目錄,自行創(chuàng)建 -->
        <property>
              <name>hadoop.tmp.dir</name>
              <value>/home/bdp/data/hadoop/tmp</value>
        </property>
        <property>
                <name>hadoop.proxyuser.bdp.hosts</name>
                <value>*</value>
        </property>
        <property>
                <name>hadoop.proxyuser.bdp.groups</name>
                <value>*</value>
        </property>
</configuration>

2.4 配置 hdfs-site.xml

<configuration>
    <property>
          <name>dfs.namenode.secondary.http-address</name>
          <value>BI01:50090</value>
    </property>
    <property>
          <name>dfs.replication</name>
          <value>2</value>
    </property>
    <property>
          <name>dfs.namenode.name.dir</name>
          <value>file:/home/bdp/data/hadoop/hdfs/name</value>
    </property>
    <property>
          <name>dfs.datanode.data.dir</name>
          <value>file:/home/bdp/data/hadoop/hdfs/data</value>
    </property>
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>
</configuration>

2.5 配置yarn-site.xml

<configuration>
    <property>
          <name>yarn.nodemanager.aux-services</name>
          <value>mapreduce_shuffle</value>
    </property>
    <property>
          <name>yarn.resourcemanager.address</name>
          <value>BI01:8032</value>
    </property>
    <property>
          <name>yarn.resourcemanager.scheduler.address</name>
          <value>BI01:8030</value>
    </property>
    <property>
          <name>yarn.resourcemanager.resource-tracker.address</name>
          <value>BI01:8031</value>
    </property>
    <property>
          <name>yarn.resourcemanager.admin.address</name>
          <value>BI01:8033</value>
    </property>
    <property>
          <name>yarn.resourcemanager.webapp.address</name>
          <value>BI01:8088</value>
    </property>

    <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>50000</value>
    </property>
    <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>1024</value>
    </property>
    <property>
        <name>yarn.nodemanager.vmem-pmem-ratio</name>
        <value>4</value>
    </property>
    <!-- 64GB SinanWu-->
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>65536</value>
    </property>
    <property>
        <name>yarn.nodemanager.resource.cpu-vcores</name>
        <value>16</value>
    </property>
    <!-- 開啟日志聚合 -->
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <!-- 日志聚合目錄 -->
    <property>
        <name>yarn.nodemanager.remote-app-log-dir</name>
        <value>/tmp/logs</value>
    </property>
    <!-- 3 days -->
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>259200</value>
    </property>
    <property>
        <name>yarn.log-aggregation.retain-check-interval-seconds</name>
        <value>3600</value>
    </property>
</configuration>

2.6 配置mapred-site.xml

<configuration>
  <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
  </property>
  <property>
    <name>mapreduce.jobhistory.address</name>
    <value>BI01:10020</value>
  </property>
  <property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>BI01:19888</value>
  </property>
  <property>
    <name>mapreduce.jobhistory.intermediate-done-dir</name>
    <value>/mr-history/tmp</value>
  </property>
  <property>
    <name>mapreduce.jobhistory.done-dir</name>
    <value>/mr-history/done</value>
  </property>
  <property>
    <name>mapreduce.map.memory.mb</name>
    <value>16000</value>
  </property>
  <property>
    <name>mapreduce.reduce.memory.mb</name>
    <value>16000</value>
  </property>
  <property>
      <name>mapreduce.map.java.opts</name>
      <value>-Xmx40000m</value>
  </property>
  <property>
      <name>mapreduce.reduce.java.opts</name>
      <value>-Xmx40000m</value>
  </property>
</configuration>

2.7 除了site配置文件,還有很多env的腳本需要優(yōu)化
這里在很多安裝教程里沒有提及,因?yàn)閷?duì)于安裝時(shí)期來說是不需要修改的。但一旦跑起數(shù)據(jù)來,很多進(jìn)程的啟動(dòng)腳本里分配的java虛擬機(jī)的堆棧都不夠用。下面提前介紹一下,同樣,直接上sh文件。

hadoop-env.sh 片段

# The java implementation to use.
export JAVA_HOME=/usr/java/jdk1.8.0_144

# The maximum amount of heap to use, in MB. Default is 1000.
export HADOOP_HEAPSIZE=40000

# The following applies to multiple commands (fs, dfs, fsck, distcp etc)
export HADOOP_CLIENT_OPTS="-Xms1G -Xmx40G $HADOOP_CLIENT_OPTS"

40G是不是有些粗暴?后續(xù)待進(jìn)一步優(yōu)化

mapred-env.sh 片段

export HADOOP_JOB_HISTORYSERVER_HEAPSIZE=1000

yarn-env.sh 片段

JAVA=$JAVA_HOME/bin/java
JAVA_HEAP_MAX=-Xmx1000m

2.8 Hadoop安裝問題集錦
2.8.1 hadoop節(jié)點(diǎn)nodemanager啟動(dòng)失敗
查看logs/yarn-bdp-nodemanager-BI02.log可以看到錯(cuò)誤信息。其實(shí)就是yarn-site.xml配置有點(diǎn)問題。nodemanager要求的內(nèi)存最低1024MB。
解決方案: a. yarn-env.sh中的JAVA_HEAP_MAX=-Xmx1000m
b. 更改yarn-site.xml的配置文件(如下)

    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>65536</value>
    </property>
    <property>
        <name>yarn.nodemanager.resource.cpu-vcores</name>
        <value>16</value>
    </property>

a和b兩個(gè)步驟都要執(zhí)行,且b里面兩項(xiàng)都要配置

2.9 配置和啟動(dòng)History Server
Hadoop日志聚合和jobhistoryserver配置,詳細(xì)參考:
http://blog.csdn.net/qq_23146763/article/details/71896401
http://blog.csdn.net/shenfuli/article/details/52470688

注意:同時(shí)要修改hdfs上目錄的權(quán)限

3.Hive安裝

詳細(xì)可參考:
http://www.cnblogs.com/kinginme/p/7233315.html

3.1 安裝Mysql
詳細(xì)可參考:
linux 安裝mysql數(shù)據(jù)庫——yum安裝法,http://www.cnblogs.com/nzplearnSite/p/5002775.html

命令安裝mysql

# yum install mysql mysql-server mysql-devel -y

最后提示 Complete! 表示安裝成功

查看是否生成了mysqld服務(wù), 并設(shè)置開機(jī)啟動(dòng)

# chkconfig --list |grep mysql 

我們需要設(shè)置mysqld隨機(jī)啟動(dòng),執(zhí)行下面命令進(jìn)行設(shè)置

# chkconfig mysqld on 

啟動(dòng)mysqld服務(wù)
執(zhí)行如下命令進(jìn)行啟動(dòng),兩種方法都可以:

# /etc/init.d/mysqld start     
# service mysqld start 

設(shè)置MySQL的root密碼

mysqladmin -u root password "newpass"

mysql> create user 'hive' identified by 'hadoop123';
Query OK, 0 rows affected (0.00 sec)

mysql> create database hivemeta;
Query OK, 1 row affected (0.00 sec)

mysql> grant all privileges on hivemeta.* to 'hive'@'%' identified by 'hadoop123';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

注意:有時(shí)候感覺grant不起作用,是因?yàn)橛械膍ysql版本的'%'不包括localhost,要單獨(dú)對(duì)@'localhost'進(jìn)行賦值
詳細(xì)可參考:http://blog.sina.com.cn/s/blog_49cc672f0100w4dt.html

mysql> grant all privileges on hivemeta.* to 'hive'@'localhost' identified by 'hadoop123';
Query OK, 0 rows affected (0.00 sec)

mysql> grant all on *.* to root@'localhost' identified by 'hadoop123';
Query OK, 0 rows affected (0.00 sec)

mysql> select Host,User,Password from user;
+-----------+------+-------------------------------------------+
| Host      | User | Password                                  |
+-----------+------+-------------------------------------------+
| localhost | root | *F14F709577A216DE31466C3EB73SINANWUF9500 |
| bi01      | root |                                           |
| 127.0.0.1 | root |                                           |
| localhost |      |                                           |
| bi01      |      |                                           |
| %         | root | *F14F709577A216DE31466C3EB73B85B3A95F9500 |
| %         | hive | *F14F709577A216DE31466C3EB73B85B3A95F9500 |
| localhost | hive | *F14F709577A216DE31466C3EB73B85B3A95F9500 |
+-----------+------+-------------------------------------------+
8 rows in set (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

3.2 修改Hive配置文件
在目錄/home/bdp/opt/hive-1.2.2/conf下拷貝一個(gè)模板出來,命名為:hive-site.xml

cp hive-default.xml.template hive-site.xml 

hive-site.xml配置文件全部清空只保留以下內(nèi)容,其中注意要修改jdbc的url參數(shù)

<configuration>
  <!-- 指定HDFS中的hive倉庫地址 -->
  <property>
      <name>hive.metastore.warehouse.dir</name>
      <value>/hive/warehouse</value>
  </property>
  <!-- 該屬性為空表示嵌入模式或本地模式,否則為遠(yuǎn)程模式 -->
  <property>
      <name>hive.metastore.uris</name>
      <value></value>
  </property>
  <!-- 指定mysql的連接 -->
  <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://localhost:3306/hivemeta?createDatabaseIfNotExist=true&amp;useSSL=false&amp;characterEncoding=UTF-8</value>
  </property>
  <!-- 指定驅(qū)動(dòng)類 -->
  <property>
      <name>javax.jdo.option.ConnectionDriverName</name>
      <value>com.mysql.jdbc.Driver</value>
  </property>
  <!-- 指定用戶名 -->
  <property>
      <name>javax.jdo.option.ConnectionUserName</name>
      <value>hive</value>
  </property>
  <!-- 指定密碼 -->
  <property>
      <name>javax.jdo.option.ConnectionPassword</name>
      <value>hadoop123</value>
  </property>
  <property>
      <name>hive.metastore.schema.verification</name>
      <value>false</value>
  </property>
  <!-- The location of the plugin jars-->
  <property>
      <name>hive.aux.jars.path</name>
      <value>/hive/lib/hive-hbase-handler-1.2.2.jar,/hive/lib/hbase-annotations-1.2.6.jar,/hive/lib/hbase-client-1.2.6.jar,/hive/lib/hbase-common-1.2.6.jar,/hive/lib/hbase-hadoop2-compat-1.2.6.jar,/hive/lib/hbase-it-1.2.6.jar,/hive/lib/hbase-prefix-tree-1.2.6.jar,/hive/lib/hbase-procedure-1.2.6.jar,/hive/lib/hbase-protocol-1.2.6.jar,/hive/lib/hbase-resource-bundle-1.2.6.jar,/hive/lib/hbase-rest-1.2.6.jar,/hive/lib/hbase-server-1.2.6.jar,/hive/lib/hbase-shell-1.2.6.jar,/hive/lib/hbase-thrift-1.2.6.jar,/hive/lib/zookeeper-3.4.10.jar,/hive/lib/guava-14.0.1.jar</value>
  </property>
  <property>
      <name>hive.zookeeper.quorum</name>
      <value>BI01,BI02,BI03</value>
  </property>
<property>
      <name>hive.auto.convert.join</name>
      <value>false</value>
  </property>
  <property>
      <name>hive.mapjoin.smalltable.filesize</name>
      <value>25000000</value>
  </property>
  <property>
      <name>hive.auto.convert.join.noconditionaltask</name>
      <value>false</value>
  </property>
  <property>
      <name>hive.auto.convert.join.noconditionaltask.size</name>
      <value>500000000</value>
  </property>
</configuration>

3.3 MySQL的jdbc驅(qū)動(dòng)<mysql-connector-java-5.1.28.jar>,放到hive安裝包的lib目錄下
3.4 運(yùn)行hive之前首先要確保meta store服務(wù)已經(jīng)啟動(dòng)

nohup hive --service metastore > metastore.log 2>&1 &

3.5 啟動(dòng)Hive后,登錄Mysql查看新建的表

mysql> use hivemeta;
mysql> show tables;
+---------------------------+
| Tables_in_hivemeta        |
+---------------------------+
| BUCKETING_COLS            |
| CDS                       |
| COLUMNS_V2                |
| DATABASE_PARAMS           |
| DBS                       |
| GLOBAL_PRIVS              |
| PARTITIONS                |
| PARTITION_KEYS            |
| PARTITION_KEY_VALS        |
| PARTITION_PARAMS          |
| PART_COL_STATS            |
| ROLES                     |
| SDS                       |
| SD_PARAMS                 |
| SEQUENCE_TABLE            |
| SERDES                    |
| SERDE_PARAMS              |
| SKEWED_COL_NAMES          |
| SKEWED_COL_VALUE_LOC_MAP  |
| SKEWED_STRING_LIST        |
| SKEWED_STRING_LIST_VALUES |
| SKEWED_VALUES             |
| SORT_COLS                 |
| TABLE_PARAMS              |
| TAB_COL_STATS             |
| TBLS                      |
| VERSION                   |
+---------------------------+
27 rows in set (0.00 sec)

3.6 測(cè)試
詳細(xì)可以參考:http://blog.csdn.net/blueheart20/article/details/38460541

hive> create table test1(name string, age int);
OK
Time taken: 1.25 seconds
hive> show tables;
OK
test1
Time taken: 0.101 seconds, Fetched: 1 row(s)
hive> desc test1;
OK
name                    string
age                     int
Time taken: 0.1 seconds, Fetched: 2 row(s)

進(jìn)入MySQL查看test1表的信息:

mysql> select * from TBLS;
+--------+-------------+-------+------------------+-------+-----------+-------+----------+---------------+--------------------+--------------------+
| TBL_ID | CREATE_TIME | DB_ID | LAST_ACCESS_TIME | OWNER | RETENTION | SD_ID | TBL_NAME | TBL_TYPE      | VIEW_EXPANDED_TEXT | VIEW_ORIGINAL_TEXT |
+--------+-------------+-------+------------------+-------+-----------+-------+----------+---------------+--------------------+--------------------+
|      1 |  1509345519 |     1 |                0 | bdp   |         0 |     1 | test1    | MANAGED_TABLE | NULL               | NULL               |
+--------+-------------+-------+------------------+-------+-----------+-------+----------+---------------+--------------------+--------------------+
1 row in set (0.00 sec)

3.7 安裝Hive過程中碰到的問題
錯(cuò)誤:FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
原因:因?yàn)闆]有正常啟動(dòng)Hive 的 Metastore Server服務(wù)進(jìn)程。
解決方法:?jiǎn)?dòng)Hive 的 Metastore Server服務(wù)進(jìn)程,執(zhí)行如下命令:

# hive --service metastore &

詳細(xì)可以參考:http://blog.csdn.net/freedomboy319/article/details/44828337

錯(cuò)誤:MetaException(message:Version information not found in metastore
詳細(xì)可以參考:http://blog.csdn.net/youngqj/article/details/19987727

詳細(xì)可以參考:徹底弄清Hive安裝過程中的幾個(gè)疑問點(diǎn)
http://www.aboutyun.com/thread-10937-1-1.html

4.ZooKeeper安裝

詳細(xì)可以參考下面兩個(gè)帖子:
http://blog.csdn.net/aquester/article/details/24301195
http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html#sc_zkMulitServerSetup
4.1 三臺(tái)服務(wù)器上分別創(chuàng)建data目錄和myid文件

[bdp@BI02 ~]$ mkdir -p data/hadoop/zookeeper/data
Fullpath:/home/bdp/data/hadoop/zookeeper/data

[bdp@BI01 data]$ echo '1' > myid
[bdp@BI02 ~]$ echo '2' > data/hadoop/zookeeper/data/myid
[bdp@BI03 ~]$ echo '3' > data/hadoop/zookeeper/data/myid

4.2 修改conf/zoo.cfg

tickTime=2000
dataDir=/opt/zookeeper/data
clientPort=2181
initLimit=5
syncLimit=2
server.1=master1:2888:3888 
server.2=slave1:2888:3888
server.3=slave2:2888:3888
  • server.N中的N值必須和myid保持相同。

  • 端口2181用于監(jiān)聽客戶端的連接,端口2888用于Leader監(jiān)聽Follower的連接,而3888則用于Leader選舉。

  • dataDir用來指定快照文件存放目錄,dataLogDir用來指定事務(wù)日志文件存放目錄。如果只指定了dataDir,而沒指定dataLogDir,則事務(wù)日志文件也存放于dataDir指定的目錄。

  • 默認(rèn),autopurge的兩個(gè)參數(shù)是被注釋的?!癮utopurge.purgeInterval”指定自動(dòng)清理快照文件和事務(wù)日志文件的時(shí)間,單位為小時(shí),默認(rèn)為0表示不自動(dòng)清理,這個(gè)時(shí)候可以使用腳本zkCleanup.sh手動(dòng)清理。不清理的結(jié)果是占用的磁盤空間越來越大?!癮utopurge.snapRetainCount”用于指定保留快照文件和事務(wù)日志文件的個(gè)數(shù),默認(rèn)為3。

最后我的配置如下:

tickTime=2000
initLimit=5
syncLimit=2
dataDir=/home/bdp/data/hadoop/zookeeper/data
dataLogDir=/home/bdp/opt/zookeeper-3.4.10/logs
clientPort=2181

autopurge.snapRetainCount=10
autopurge.purgeInterval=1

server.1=BI01:2888:3888
server.2=BI02:2888:3888
server.3=BI03:2888:3888

4.3 修改/bin/zkEnv.sh
設(shè)置環(huán)境變量ZOO_LOG_DIR為zookeeper的日志存放目錄,如:
export ZOO_LOG_DIR=/data/hadoop/zookeeper/log
可將這一行放在ZOOKEEPER_PREFIX之后。
再修改下ZOO_LOG4J_PROP,以讓日志不是輸出到zookeeper.out,而是寫入到日志文件,將:ZOO_LOG4J_PROP="INFO,CONSOLE",改成:
ZOO_LOG4J_PROP="INFO,ROLLINGFILE"

4.4 修改conf/log4j.properties
log4j.appender.ROLLINGFILE.MaxFileSize=100MB
log4j.appender.ROLLINGFILE.MaxBackupIndex=10
設(shè)置每個(gè)日志文件大小為100M,滾動(dòng)10個(gè)。

5.HBase安裝

官方參考:
http://hbase.apache.org/book.html#quickstart_fully_distributed
詳細(xì)可以參考:
http://blog.csdn.net/gamer_gyt/article/details/52032579

提示:先看單機(jī)偽分布的配置,才能繼續(xù)真正分布式的配置
5.1 編輯/home/bdp/opt/hbase-1.2.6/conf/hbase-env.sh

# The java implementation to use.  Java 1.7+ required.
export JAVA_HOME=/usr/java/jdk1.8.0_144

# Extra Java CLASSPATH elements.  Optional.
# export HBASE_CLASSPATH=

# The maximum amount of heap to use. Default is left to JVM default.
export HBASE_HEAPSIZE=7G

# Uncomment below if you intend to use off heap cache. For example, to allocate 8G of
# offheap, set the value to "8G".
# export HBASE_OFFHEAPSIZE=1G

# Extra Java runtime options.
# Below are what we set by default by SinanWu.  May only work with SUN JVM.
# For more on why as well as other possible settings,
# see http://wiki.apache.org/hadoop/PerformanceTuning
export HBASE_OPTS="-Xmx24G -Xms16G -Xmn9G -XX:PermSize=1G -XX:MaxPermSize=2G -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly -XX:+CMSParallelRemarkEnabled -XX:+UseParNewGC -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:$HBASE_HOME/logs/gc-$(hostname)-hbase.log"

# Tell HBase whether it should manage it's own instance of Zookeeper or not.
export HBASE_MANAGES_ZK=false

5.2 編輯編輯/home/bdp/opt/hbase-1.2.6/conf/hbase-site.xml

<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://BI01:9000/hbase</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/bdp/data/hadoop/zookeeper/data</value>
  </property>
  <property>
     <name>hbase.cluster.distributed</name>
     <value>true</value>
  </property>
  <property>
      <name>hbase.master</name>
      <value>BI01:60000</value>
  </property>
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>BI01,BI02,BI03</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
  </property>
<property>
        <name>zookeeper.session.timeout</name>
        <value>300000</value>
  </property>
  <property>
        <name>hbase.zookeeper.property.tickTime</name>
        <value>60000</value>
  </property>
  <property>
        <name>hbase.hregion.memstroe.mslab.enable</name>
        <value>true</value>
  </property>
  <property>
        <name>hbase.zookeeper.property.maxClientCnxns</name>
        <value>10000</value>
  </property>
  <property>
        <name>hbase.client.scanner.timeout.period</name>
        <value>660000</value>
  </property>
  <property>
        <name>hbase.rpc.timeout</name>
        <value>660000</value>
  </property>
  <property>
        <name>hbase.client.retries.number</name>
        <value>2</value>
  </property>
</configuration>

5.3 編輯conf/regionservers
清空文件里的已有內(nèi)容,修改為:

BI02         
BI03          

5.4 配置BI02為backup master
Configure HBase to use node-b as a backup master. Create a new file in conf/ of BI02 called backup-masters, and add a new line to it with the hostname for node-b.
在BI02服務(wù)器上,/home/bdp/opt/hbase-1.2.6/conf/目錄下創(chuàng)建backup-masters文件,內(nèi)容如下所示:

[bdp@BI02 conf]$ cat backup-masters
BI02

[bdp@BI02 conf]$

5.5 先確保ZooKeeper已經(jīng)啟動(dòng),再啟動(dòng)HBase

6.Kylin安裝

6.1 安裝按照官方文檔進(jìn)行
6.2.配置和啟動(dòng)Hadoop history server
6.3 修改必要的hdfs上面的文件夾的權(quán)限
6.4 可考慮修改配置文件:kylin_hive_conf.xml,禁用hive的本地mapred任務(wù)。這是因?yàn)閔ive的本地任務(wù),文件大小和個(gè)數(shù)滿足一個(gè)條件就會(huì)啟用,因此一兩個(gè)大表會(huì)導(dǎo)致本地模式內(nèi)存溢出

Kylin的安裝比較簡(jiǎn)單,但是在Cube的創(chuàng)建上會(huì)碰到很多問題,更多更新可以移步到 http://shuquaner.com/ 保持關(guān)注:)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容