Hadoop集群搭建及Hive的安裝與使用

1、集群安裝與配置

以centos為例,首先創(chuàng)建4臺(tái)虛擬機(jī),分別命名為hp001、hp002、hp003、hp004。

安裝成功后,然后分別修改主機(jī)名(hp002、hp003、hp004同hp001)。

vim /etc/sysconfig/network? ? ? ? ? ? ? ? ? ? ? # 編輯network文件修改

hostname hadoop1

cat /etc/sysconfig/network? ?

cat /etc/sysconfig/network?

NETWORKING=yes

HOSTNAME=hp001

再修改/etc/hosts文件(hp002、hp003、hp004同hp001),本機(jī)IP對(duì)應(yīng)主機(jī)名。

2、shell腳本編寫(xiě)

配置ssh

注意在root賬號(hào)下創(chuàng)建,否則沒(méi)有權(quán)限。

1)安裝ssh

yum apt-get install ssh

2)生成密鑰對(duì)

ssh-keygen –t? rsa –P ‘’ –f ~/.ssh/

cd? ~/.ssh

3)導(dǎo)入公鑰數(shù)據(jù)到授權(quán)庫(kù)中

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

scp? /root/.ssh/*? hp002@:/root/.ssh/

scp? /root/.ssh/*? hp003@:/root/.ssh/

scp? /root/.ssh/*? hp004@:/root/.ssh/

4)登錄其他機(jī)器:

ssh? hp002

Ifconfig

2、scp

3、rsync 遠(yuǎn)程同步工具 主要備份和鏡像支持鏈接,設(shè)備。

? ? rsync –rvl /soft/* hadoop@hp002:/soft

4、自定義腳本xsync,在集群上分發(fā)文件,循環(huán)復(fù)制文件到所以節(jié)點(diǎn)的相同目錄下,

在hp001主機(jī)上/usr/loca/bin下創(chuàng)建xsync文件

然后 vi xsync編寫(xiě)如下代碼保存

#!/bin/bash

pcount=$#

if(( pcount<1 )) ; then

echo no args;

exit;

fi

#獲取文件名稱

p1=$1;

fname=`basename $p1`;

dname=`cd -P $(dirname $p1) ; pwd`

curse=`whoami`;

for(( host=2 ; host<5; host=host+1 )) ; do

? echo ===================== copy to hp00$host ============

? rsync -rvl? $dname/$fname $curse@hp00$host:$dname;

done

? echo ========================== end =====================

4、編寫(xiě)/usr/local/bin/xcall腳本,在所有主機(jī)上執(zhí)行相同的命令。

例如:xcall rm –rf /soft/jdk

在hp001主機(jī)上/usr/loca/bin下創(chuàng)建xcall文件

然后 vi xcall編寫(xiě)如下代碼保存

#!/bin/bash

pcount=$#

if(( pcount<1 )) ; then

echo no args;

exit;

fi

#

echo =========== localhost =========

$@

for(( host=2 ; host<5; host=host+1 )) ; do

? echo ===================== exe hp00$host ============

? ssh hp00$host $@

done

? echo ========================== end =====================

3、各主機(jī)jdk安裝

下載jdk上傳到hp001上

jdk_1.8.0_131.tar.gz

tar -zxvf jdk_1.8.0_131.tar.gz到/usr/local/jdk目錄下

然后用xsync命令分別在hp002、hp003、hp004創(chuàng)建/usr/local/jdk目錄,用xcall

命令分別復(fù)制到hp002、hp003、hp004。

配置jdk環(huán)境變量,etc/profile文件中

export JAVA_HOME=/usr/local/jdk

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

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JRE_HOME=$JAVA_HOME/jre

用xcall命令分別復(fù)制到hp002、hp003、hp004的etc/profile文件中。

驗(yàn)證安裝是否成功

4、Hadoop集群搭建

1、本機(jī)集群機(jī)器:四臺(tái)對(duì)應(yīng)hadoop1、hadoop2、hadoop3、hadoop4

hadoop1 ? ? ? node1作為名稱節(jié)點(diǎn)

hadoop2 ? node2作為輔助名稱節(jié)點(diǎn)

hadoop3 ? node3作為數(shù)據(jù)節(jié)點(diǎn)

hadoop4 ? node4作為數(shù)據(jù)節(jié)點(diǎn)

安裝hadoop

創(chuàng)建目錄/home/hadoop/bigdata/,下載hadoop-2.7.2.tar.gz,上傳解壓tar -zxvf hadoop-2.7.2.tar.gz。用xcall命令分別復(fù)制到hp002、hp003、hp004。

3、配置環(huán)境變量etc/profile文件中

export HADOOP_HOME=/home/hadoop/bigdata/hadoop-2.7.2

export PATH=.:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH

用xcall命令分別復(fù)制到hp002、hp003、hp004的etc/profile文件中。

驗(yàn)證安裝成功

hadoop version

hadoop集群配置

完全分布式配置方式:配置文件/home/hadoop/bigdata/hadoop-2.7.2/etc/hadoop/下的四個(gè)xml文件。

core-site.xml

<configuration>

? ? ? ? <property>

? ? ? ? <name>fs.defaultFS</name>

? ? ? ? <value>hdfs://hp001</value>

? ? </property>

? ? <property>

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

? ? ? ? ? <value>/home/hadoop/bigdata</value>

? ? </property>

</configuration>

hdfs-site.xml

<configuration>

? ? ? ? <property>

? ? ? ? ? ? ? ? <name>dfs.replication</name>

? ? ? ? ? ? ? ? <value>3</value>

? ? ? ? </property>

? ? ? ? <property>

? ? <name>dfs.namenode.secondary.http-address</name>

? <value>hp002:50090</value>

? ? </property>

</configuration>

mapred-site.xml

<configuration>

? ? ? ? <property>

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

? ? ? ? ? ? ? ? <value>yarn</value>

? ? ? ? </property>

</configuration>

yarn-site.xml

<configuration>

? ? ? ? <property>

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

? ? ? ? <value>hp001</value>

? ? </property>

? ? <property>

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

? ? ? ? <value>mapreduce_shuffle</value>

? ? </property>

</configuration>

/home/hadoop/bigdata/hadoop-2.7.2/etc/hadoop/slaves文件修改為

hp003

hp004

在集群上分發(fā)以上5個(gè)文件

cd /home/hadoop/bigdata/hadoop-2.7.2/etc/hadoop

xsync core-site.xml

xsync hdfs-site.xml

xsync mapred-site.xml

xsync yarn-site.xml

xsync slaves

6、首次啟動(dòng)hadoop

1)格式化文件系統(tǒng)

$>hadoop namenode -format

2)啟動(dòng)所有進(jìn)程

$>start-all.sh

3)查詢進(jìn)程

$>xcall jps

4)停止所有進(jìn)程

$>stop-all.sh

5)查看文件系統(tǒng)

$hadoop fs -ls

6)創(chuàng)建文件系統(tǒng)

$>hadoop fs –mkdir –p /user/Ubuntu/data

$>hadoop fs –ls –R /

7、Hadoop包含三個(gè)模塊

1)Hadoop common:

支持其他模塊的工具模塊

2)Hadoop Distributed File System (HDFS)

分布式文件系統(tǒng),提供了對(duì)應(yīng)用程序數(shù)據(jù)的高吞吐量訪問(wèn)。

進(jìn)程:

NameNode? 名稱節(jié)點(diǎn) NN

DataNode 數(shù)據(jù)節(jié)點(diǎn) DN

SecondaryNamenode? 輔助名稱節(jié)點(diǎn) 2ndNN

3)Hadoop YARN:

作業(yè)調(diào)度與集群資源管理的框架。

進(jìn)程

ResourceManager? ? ? ? ? ? ? 資源管理 — RM

NodeManager? ? ? ? ? ? ? ? ? 節(jié)點(diǎn)管理器—NM

4)Hadoop MapReduce:

基于yarn系統(tǒng)的對(duì)大數(shù)據(jù)集進(jìn)行并行處理技術(shù)。

8、使用webui訪問(wèn)hadoop? hdfs

1)? hdfs? ? ? ? http:/hp001:50070

2)? dataNode? ? http://hp003:50075

3)? 2nn http://hp002:50090

五、hive安裝與使用

1、下載hive

下載apache hive -2.3.4.bin.tar.gz

2、安裝hive

? cd? /home/hadoop/bigdata/

? tar -zxvf Apache Hive -2.3.4.bin.tar.gz

? ln -s? apache hive -2.3.4.bin? apache hive

3、配置環(huán)境變量etc/profile文件中

export HIVE_HOME=/home/hadoop/bigdata/apache-hive

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

4、查看是否安裝成功

hive --version

配置hive

修改/home/hadoop/bigdata/apache-hive/conf/hive-env.sh文件指定hadoop目錄

/home/hadoop/bigdata/apache-hive/conf/hive-default.xml.template 默認(rèn)配置文件不要修改

創(chuàng)建hive-site.xml:/home/hadoop/bigdata/apache-hive/conf/hive-site.xml,替換hive-site.xml中${system:java.io.temp.dir}=/home/hadoop/bigdata/apache-hive。

7、配置Hive元數(shù)據(jù)庫(kù)

Hive使用rdbms存儲(chǔ)元數(shù)據(jù),內(nèi)置derby數(shù)據(jù)庫(kù)。在/home/hadoop/bigdata/apache-hive/bin/目錄下初始化schema庫(kù),要啟動(dòng)hadoop集群:

Schematool --initSchema -dbType derby

hive啟動(dòng)

進(jìn)入hive shell

$hive啟動(dòng)后如下圖。

Hive元數(shù)據(jù)庫(kù)mysql使用及常用命令

Hive配置

Hive常見(jiàn)命令類似于mysql,本例子用mysql作為hive元數(shù)據(jù)庫(kù),首先配置hive-sxit.xml的mysql數(shù)據(jù)庫(kù)驅(qū)動(dòng)信息。

<property>

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

? ? <value>jdbc:mysql://192.168.0.100:3306/hivedb</value>

? ? <description>

? ? ? JDBC connect string for a JDBC metastore.

? ? ? To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.

? ? ? For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.

? ? </description>

? </property>

<property>

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

? ? <value>com.mysql.jdbc.Driver</value>

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

<property>

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

? ? <value>root</value>

? ? <description>Username to use against metastore database</description>

? </property>

<property>

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

? ? <value>123456789</value>

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

? </property>

? </property>

Mysql數(shù)據(jù)庫(kù)配置

1)創(chuàng)建數(shù)據(jù)庫(kù)hivedb

2)賦予hive連接mysql用戶的權(quán)限

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

將mysql的驅(qū)動(dòng)包放到hive下

放在/home/hadoop/bigdata/apache-hive/lib/下

4)使用schematool初始化元數(shù)據(jù)。

schematool --initSchema -dbType mysql

HDFS存儲(chǔ)位置配置

Hive配置文件里要用到HDFS的一些路徑,需要先手動(dòng)創(chuàng)建。

hadoop fs -mkdir -p /soft/hive/warehouse

hdfs dfs -mkdir -p /soft/hive/tmp

hdfs dfs -mkdir -p /soft/hive/log

hdfs dfs -chmod g+w /soft/hive/warehouse

hdfs dfs -chmod g+w /soft/hive/tmp

hdfs dfs -chmod g+w /soft/hive/log

java連接hive

1)啟動(dòng)hive服務(wù)

/home/hadoop/bigdata/apache-hive/bin目錄下執(zhí)行命令$hive --service hiveserver2 start。

java代碼連接hive到mysql中查詢數(shù)據(jù)

Hive.server2.enable.doAs =false;

Hive.meatstroe.saslenabled=false;

Hive.server2.authentication=none

6、關(guān)于電腦配置

電腦配置低了帶不動(dòng)啊!12GB內(nèi)存都快用滿了。

電腦配置如下都還可以,但是至少比下圖中的要高才行。

?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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