1. 程式人生 > >HADOOP+ZOOKEEPER+HBASE+HIVE

HADOOP+ZOOKEEPER+HBASE+HIVE

1.配置yum源

Xftp 10.72.39.160  /etc/yum.repo.d/RHEL.repo

目的機器上:

cd /etc/yum.repos.d/

mkdir bak

mv CentOS-*.repo bak

yum clean all

yum makecache

yum list

2.編譯64位庫

yum install gcc-c++-y

yum installncurses-devel -y

yum install cmake -y

yum installzlib-devel -y

解壓tar-zvxf hadoop-2.7.2.tar.gz

4.安裝hadoop準備

在安裝Hadoop之前,所有叢集節點均需對作業系統進行以下配置:

4.1)去掉作業系統ulimit -n 限制

(1)修改/etc/security/limits.conf ,在最後增加如下內容:

* soft nofile 102400

* hard nofile 409600

(2)修改/etc/pam.d/login,在最後新增如下內容:

session required/lib/security/pam_limits.so

(3)重啟系統使得配置生效

4.2)關閉防火牆

(1)重啟後生效

關閉:chkconfig iptables off

(2)即時生效,重啟後失效

關閉:serviceiptables stop

4.3)配置hostname,設定主機名

vi/etc/sysconfig/network

NETWORKING=yes

HOSTNAME=master

4.4).配置host, 設定ip和主機名的對映

vi /etc/hosts

10.72.39.55   master

10.72.39.58   slave01

10.72.39.62   slave02

10.72.39.67   slave03

4.5)檢視系統的JDK版本

rpm –qa | grepjdk  若是1.8則不用管,若不是1.8則解除安裝系統jdk

yum –y remove 系統JDK版本

         安裝jdk-8u66-linux-x64.rpm

         cd/usr/local

         chmod+x jdk-8u66-linux-x64.rpm

         rpm–ivh jdk-8u66-linux-x64.rpm

修改vim~/.bash_profile  環境變數

將JAVA_HOME新增到PATH目錄中,如下:

JAVA_HOME=/usr/java/jdk1.8.0_66

PATH=$PATH:$HOME/bin:$JAVA_HOME/bin

export PATH

4.6) 配置ssh無密碼連線

SSH無密碼登入節點

這個操作是要讓 Master 節點可以無密碼 SSH 登陸到各個 Slave 節點上。

首先生成 Master 節點的公匙,在 Master 節點的終端中執行:

cd~/.ssh

rm./id_rsa*

ssh-keygen–t rsa  

 (2) 讓 Master 節點需能無密碼 SSH 本機,在 Master 節點上執行:

cat ./id_rsa.pub>> ./authorized_keys

完成後可執行 ssh Master 驗證一下(可能需要輸入 yes,成功後執行 exit 返回原來的終端)。接著在 Master 節點將上公匙傳輸到 Slave 節點:

scp~/.ssh/id_rsa.pub [email protected]:/root/

接著在 Slave節點上,將ssh 公匙加入授權:

cat ~/id_rsa.pub >>~/.ssh/authorized_keys

rm~/id_rsa.pub

如果有其他 Slave 節點,也要執行將 Master 公匙傳輸到 Slave 節點、在 Slave 節點上加入授權這兩步。

這樣,在 Master 節點上就可以無密碼 SSH 到各個 Slave 節點了。

最後測試 ssh slave01

5. Hadoop安裝

在主節點dmdb1配置

5.1)配置檔案 有的要建立目錄,根據配置檔案而定。

拷貝/hadoop+hbase叢集/home/hadoop-2.7.2/etc/hadoophadoop-env.sh,core-site.xml,hdfs- site.xml,mapred-site.xml, yarn-site.xml, yarn-env.shslaves到dmdb1相同目錄,覆蓋原檔案。

5.2) 拷貝配置好的hadoop到slave節點

scp –r /opt/hadoop-2.7.2slave01:/opt

scp –r /opt/hadoop-2.7.2slave02:/opt

scp –r /opt/hadoop-2.7.2slave03:/opt

6.配置時間同步

Includefile上面還掉了兩句:server127.127.1.0

fudge127.127.1.0stratum10

6.2) Ntp伺服器master上以守護程序啟動ntpd

service ntpd start

注:ntpd啟動後,客戶機要等幾分鐘再與其進行時間同步,否則會提示“no server suitable for synchronizationfound”錯誤。

6.3)配置時間同步客戶機slave01,slave02,slave03

新增一行,客戶機每小時跟ntp伺服器進行時間同步:

* */1 * * * /usr/sbin/ntpdate master

備註:如果客戶機沒有ntpdate,可以下載ntpdate.tar.gz/usr/sbin/目錄,然後解壓

最後檢查4臺機器時間是否一直。

7.安裝zookeeper

拷貝/hadoop+hbase叢集/opt/zookeeper-3.4.8/conf目錄下面的zoo.cfg到master相同位置

遠端分發

scp –r /opt/zookeeper-3.4.8slave01:/opt

scp –r /opt/zookeeper-3.4.8slave02:/opt

scp –r /opt/zookeeper-3.4.8slave03:/opt

在Zookeeper叢集的每臺節點上建立Zookeeper的資料檔案:

mkdir /opt/hadoop-2.7.2/zookeeper/

設定myid:

master

echo “1”> /opt/hadoop-2.7.2/zookeeper/myid

slave01

echo “2”>/opt/hadoop-2.7.2/zookeeper/myid

slave02

echo “3”> /opt/hadoop-2.7.2/zookeeper/myid

slave03

echo “4”> /opt/hadoop-2.7.2/zookeeper/myid

8.hbase安裝

在主節點上解壓HBase的tar包:

tar –zvxfhbase-1.1.4-bin.tar.gz

拷貝/hadoop+hbase叢集/opt/hbase-1.1.4/conf目錄下面的hbase-env.sh, hbase-site.xml, regionservers,backup-masters,core-site.xml,hdfs-site.xml到master的相同目錄

其中hbase-env.sh   exportHBASE_HEAPSIZE=32  這個值要根據記憶體而定。

將配置好的HBase安裝目錄拷貝到其他slave節點,例如:

scp–r /opt/hbase-1.1.4 slave01:/opt

scp–r /opt/hbase-1.1.4 slave02:/opt

9.啟動zookeeper叢集

在每臺Zookeeper叢集節點上,進入到Zookeeper的安裝目錄,執行以下命令:

bin/zkServer.sh start

檢視單機Zookeeper是leader還是follower:

停止Zookeeper:

bin/zkServer.sh stop

10.啟動hadoop叢集(只用到了dfs)

Hadoop叢集的啟動(在Master節點上操作)

/opt/hadoop-2.7.2/bin/hdfs namenode -format

啟動dfs叢集

cd $HADOOP_HOME/sbin

./start-dfs.sh

輸入jps檢視java相關程序

瀏覽器訪問相關頁面

若輸入網址為如下,需進行解析

Hadoop叢集的停止

停止dfs叢集

cd $HADOOP_HOME/sbin

./stop-dfs.sh

11.啟動hbase叢集

在啟動HBase叢集之前,需保證Hadoop叢集和Zookeeper叢集是正常執行,然後進入到HBase的安裝目錄:

啟動HBase

輸入jps檢視HBase程序情況

Master

Slave01

Slave02(main程序忽略不看)

Slave03(main程序忽略不看)

停止HBase

進入HBase shell

bin/hbase shell

若報找不到hadoop資源庫的錯,可以在hbase shell腳本里加入exportLD_LIBRARY_PATH=/ho me/hadoop-2.7.2/lib/native/,不加也不影響使用。

檢視HBase HMaster Web頁面

12.開機啟動配置

拷貝/hadoop+hbase叢集/home下master-zk-hadoop-hbase-start.sh到master指定目錄

master中加/home/master-zk-hadoop-hbase-start.sh到系統服務,防止機器重啟服務掛掉

chmod +xmaster-zk-hadoop-hbase-start.sh

ln -smaster-zk-hadoop-hbase-start.sh /etc/init.d/

拷貝/hadoop+hbase叢集/home下slave-zk-start.sh到dmdb2, dmdb3,dmdb4指定目錄

dmdb2, dmdb3, dmdb4中加/home/slave-zk-start.sh到系統服務,防止機器重啟服務掛掉

chmod +xslave-zk-start.sh

ln -s slave-zk-start.sh/etc/init.d/

13.建立表

bin/hbase shell

create‘GA_GXRY_ACT’,{NAME=>’act’,VERSIONS=>1},SPLITS_FILE=>’splits.txt’

注意:建立完表,其中存有資料後,不要修改系統時間,否則會導致hbase資料不可用,故請提前配置好叢集時間同步。萬不得已要改時間重新同步,得刪除表重新創,資料將全部丟失。

HIVE部署

將hive部署到跟NameNode同一個節點就行。

進入hive的conf資料夾:

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

cp hive-log4j.properties.template hive-log4j.properties

(1)       修改hive-site.xml

Hive的元資料儲存到DM資料庫中

需要修改的配置有:

javax.jdo.option.ConnectionURL

javax.jdo.option.ConnectionDriverName

javax.jdo.option.ConnectionUserName

javax.jdo.option.ConnectionPassword

hive.metastore.warehouse.dir

修改如下:

將javax.jdo.option.ConnectionURL配置修改成如下:

其中192.168.195.1這個ip是指DM資料庫所在的IP。

<property>

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

<value>jdbc:dm://10.74.203.57:5236?createDatabaseIfNotExist=true</value>

<description>JDBC connect string for a JDBC metastore</description>

</property>

將javax.jdo.option.ConnectionDriverName配置修改成如下:

配置DM資料庫的驅動

<property>

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

<value>dm.jdbc.driver.DmDriver</value>

<description>Driver class name for a JDBC metastore</description>

</property>

將javax.jdo.option.ConnectionUserName配置修改成如下:

配置使用者名稱

<property>

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

<value>HIVE</value>

<description>username to use against metastore database</description>

</property>

將javax.jdo.option.ConnectionPassword配置修改成如下:

配置DM資料庫的密碼

<property>

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

<value>888888888</value>

<description>password to use against metastore database</description>

</property>

將hive.metastore.warehouse.dirs配置修改成如下:

<property>

<name>hive.metastore.warehouse.dir</name>

<value>hdfs://master:9000/user/hive/warehouse</value>

<description>location of default database for the warehouse</description>

</property>

由於將Hive的元資料放在DM資料庫中,則需要做適配才行,所以要加一項配置:

<property>

         <name>datanucleus.mapping.Schema</name>

         <value>HIVE</value>

         <description>預設模式</description>

</property>

(2)       新增Jar包

將DM資料庫驅動的jar包:Dm7JdbcDriver16-20131009.jar

DM資料庫適配置jar包:datanucleus-rdbms-dm-0.0.1-SNAPSHOT.jar

將這兩個jar加到hive的lib中。

(3)       修改hive-log4j.properties

將log4j.appender.EventCounter修改成:

log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter

(4)       新增Hive的環境變數

export HIVE_HOME=/opt/hive

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

(5)       hdfs上面,建立目錄

$HADOOP_HOME/bin/hdfsdfs -mkidr /tmp

$HADOOP_HOME/bin/hdfsdfs -mkidr /user/hive/warehouse

$HADOOP_HOME/bin/hdfsdfs -chmod g+w /tmp

$HADOOP_HOME/bin/hdfsdfs -chmod g+w /user/hive/warehouse

(6)       啟動Hive

啟動metastore服務

bin/hive --service metastore &

啟動hiveserver服務

bin/hive --service hiveserver2 &