分佈式集羣搭建大全

系統準備

Centos6.5
Windows10

相關軟件包下載:html

連接:https://pan.baidu.com/s/1EOLUphwZgzwSX01HsDJM0g
提取碼:1tsfjava

說明

特別說明: 教程用的主機名分別爲master,slave1,slave2 因此發現有出現主機名爲 」 spark1」的主機名
等同於 「master」若是若是看見配置文件爲spark1,必定要修改爲master ;有些圖片是後面添加的纔出現主機名不一致但並不影響理解.
node

沒有特別說明操做都是在 master 機器操做mysql

關閉防火牆

關閉Linux和Windows的防火牆(防止機器之間應爲防火牆攔截而不能連通)linux

Windows:

window系統: 控制面板 -> 系統和安全 ->Windows Defender 防火牆 -> 啓用或關閉Windows Defender 防火牆 -> 關閉Windows Defender 防火牆 //通常只關閉」專用網絡設置」的防火牆就行
Linux:

中止防火牆: service iptables stop
啓動防火牆: service iptables start
重啓防火牆: service iptables restart
永久關閉防火牆: chkconfig iptables off
永久開啓防火牆: chkconfig iptables no
查看防火牆狀態: service iptables status

1566610578982

查看SELinux狀態 
getenforce

修改配置文件/etc/selinux/config 
將SELINUX=enforcing改成SELINUX=disabled

1566610721151

配置網絡和靜態IP

1566610758271

查看自動生成的IPweb

1566610778034

設置靜態IPsql

1566610837148

重啓網絡服務,並檢測dns是否生效shell

1566610860779

配置IP映射和主機名

更改主機名,便於集羣管理(重啓才能生效)數據庫

vim /etc/sysconfig/networkapache

HOSTNAME=master

修改其餘兩臺主機名分別爲 slave1 和 slave2

配置master主機的IP主機映射, 能夠將名稱映射爲對應的IP地址

vim /etc/hosts

192.168.153.101 master
192.168.153.102 slave1
192.168.153.103 slave2

配置SSH免祕鑰登陸

cd ~/.ssh/

ssh-keygen -t rsa    (四次連續回車)
生成 id_rsa(私鑰)  id_rsa.pub(公鑰)

1566611312765

ssh-copy-id master(主機名,須要配好了主機映射)
authorized_keys known_hosts
將另外兩臺slave1和slave2重複上述操做
複製 另外兩臺authorized_keys的內容追加到master的authorized_keys裏面
最終authorized_keys文件的內容

1566611420942

將這個最終的authorized_keys文件copy到其餘機器的 /root/.ssh 目錄下

scp -r /root/.ssh/authorized_keys root@slave1:/root/.ssh
scp -r /root/.ssh/authorized_keys root@slave2:/root/.ssh

說明:
scp -r(複製文件夾) 本地文件路徑  目標用戶名@目標主機IP/IP映射的主機名:目標主機的路徑
測試免密碼登陸
ssh slave1
ssh slave2
輸入 exit 退出

1566611521558

配置JDK1.8

解壓縮jdk安裝包
tar -zxvf jdk-8u144-linux-x64.tar.gz

建立目錄/opt/java
mkdir /opt/java

移動文件夾jdk1.8.0_144到/opt/java下面,並更名爲jdk1.8
mv jdk1.8.0_144/ /opt/java/jdk1.8
配置須要用到的全部環境變量
vim /etc/profile
#Java Config
export JAVA_HOME=/opt/java/jdk1.8
export JRE_HOME=/opt/java/jdk1.8/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

# Scala Config
export SCALA_HOME=/opt/scala/scala2.12.2

# Spark Config
export SPARK_HOME=/opt/spark/spark2.2

# Zookeeper Config
export ZK_HOME=/opt/zookeeper/zookeeper3.4

# HBase Config
export HBASE_HOME=/opt/hbase/hbase1.2

# Hadoop Config
export HADOOP_HOME=/opt/hadoop/hadoop2.8
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

# Hive Config
export HIVE_HOME=/opt/hive/hive2.1
export HIVE_CONF_DIR=${HIVE_HOME}/conf

#kafka config
export KAFKA_HOME=/opt/kafka/kafka1.0.0


export PATH=.:${JAVA_HOME}/bin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${ZK_HOME}/bin:${HBASE_HOME}/bin:${HIVE_HOME}/bin:${KAFKA_HOME}/bin:$PATH
刷新環境變量文件,使其當即生效
source /etc/profile

配置Scala2.12.2

tar -zxvf scala-2.12.2.tgz

建立目錄/opt/scala
mkdir /opt/scala

移動文件夾scala-2.12.2到/opt/ scala下面,並更名爲scala2.12.2
mv scala-2.12.2 /opt/scala/scala2.12.2

配置環境變量(略,前面配過)

source /etc/profile

配置Zookeeper

解壓文件
tar -zxvf zookeeper-3.4.10.tar.gz

mkdir /opt/zookeeper
mv zookeeper-3.4.10 /opt/zookeeper/zookeeper3.4

環境變量配置(略,前面配過)
source /etc/profile
建立存放數據的文件夾和文件
mkdir /opt/zookeeper/data
mkdir /opt/zookeeper/dataLog

/opt/zookeeper/data目錄下建立myid文件 
touch /opt/zookeeper/data/myid
更改myid文件。 我這邊爲了方便,將master、slave一、slave2的myid文件內容改成1,2,3 這些數字表明的是每一臺zookeeper本身的ID
echo 1 >> myid

配置修改zoo.cfg

cd /opt/zookeeper/zookeeper3.4/conf
cp zoo_sample.cfg zoo.cfg

vim zoo.cfg
dataDir=/opt/zookeeper/data
dataLogDir=/opt/zookeeper/dataLog
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
配置說明:
client port,顧名思義,就是客戶端鏈接zookeeper服務的端口。這是一個TCP port。
dataLogDir裏是放到的順序日誌(WAL)。而dataDir裏放的是內存數據結構的snapshot,便於快速恢復。爲了達到性能最大化,通常建議把dataDir和dataLogDir分到不一樣的磁盤上,這樣就能夠充分利用磁盤順序寫的特性。dataDir和dataLogDir須要本身建立,目錄能夠本身制定,對應便可。
server.1中的這個1須要和master這個機器上的dataDir目錄中的myid文件中的數值對應。server.2中的這個2須要和slave1這個機器上的dataDir目錄中的myid文件中的數值對應。server.3中的這個3須要和slave2這個機器上的dataDir目錄中的myid文件中的數值對應。固然,數值你能夠隨便用,只要對應便可。2888和3888的端口號也能夠隨便用,由於在不一樣機器上,用成同樣也無所謂。
1.tickTime:CS通訊心跳數 Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每一個 tickTime 時間就會發送一個心跳。tickTime以毫秒爲單位。 tickTime=2000 2.initLimit:LF初始通訊時限 集羣中的follower服務器(F)與leader服務器(L)之間初始鏈接時能容忍的最多心跳數(tickTime的數量)。 initLimit=10 3.syncLimit:LF同步通訊時限 集羣中的follower服務器與leader服務器之間請求和應答之間能容忍的最多心跳數(tickTime的數量)。 syncLimit=5

依舊將zookeeper傳輸到其餘的機器上,記得更改 /opt/zookeeper/data 下的myid,這個不能一致。

將文件複製到其餘機器

scp -r /opt/zookeeper root@slave1:/opt
scp -r /opt/zookeeper root@slave2:/opt

須要更改myid文件

啓動全部機器的Zookeeper

cd /opt/zookeeper/zookeeper3.4/bin

啓動服務
./ zkServer.sh start

查看啓動狀態,各個機器上zookeeper的leader(主)和follower(從) ,只能一個是主,隨機選擇
./zkServer.sh status

1566617818864

配置Hadoop HA

Hadoop HA:在Hadoop分佈式只有一個master管理的基礎上,實如今主master宕機時,設置一個Node在Zookeeper的調度下能夠當即頂替master的全部任務。不會應爲master宕機致使整個集羣癱瘓。

主機 安裝的軟件 開啓的進程
spark1 jdk,hadoop,zookeeper 7669 DFSZKFailoverController 4261 QuorumPeerMain 7367 NameNode 8362 Jps 8269 ResourceManager
slave1 jdk,hadoop,zookeeper 8993 NameNode 9585 NodeManager 3765 QuorumPeerMain 9061 DataNode 9143 JournalNode 9726 Jps 9247 DFSZKFailoverController 8339 ResourceManager
slave2 jdk,hadoop,zookeeper 4996 NodeManager 5141 Jps 3034 QuorumPeerMain 4763 JournalNode 4668 DataNode
tar -zxvf hadoop-2.8.2.tar.gz

mkdir /opt/hadoop

mv hadoop-2.8.2  /opt/hadoop hadoop2.8

配置環境變量(前面配好了 # Hadoop Config)
source /etc/profile

cd /opt/hadoop/hadoop2.8/etc/hadoop

修改 core-site.xml

vim core-site.xml
在<configuration>節點內加入配置
<configuration>

<property>
<name>fs.defaultFS</name>
    <value>hdfs://ns1</value>
</property>

<property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/hadoop/hadoop2.8/data/tmp</value>
</property>

<property>
    <name>hadoop.http.staticuser.user</name>
    <value>root</value>
</property>

<property>
    <name>ha.zookeeper.quorum</name>
    <value>spark1:2181,slave1:2181,slave2:2181</value>
</property>

</configuration>

修改 hadoop-env.sh

export JAVA_HOME=/opt/java/jdk1.8

export HADOOP_CONF_DIR=/opt/hadoop/hadoop2.8/etc/hadoop

export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"

配置log4j.properties文件

cd  /opt/hadoop/hadoop2.8/etc/hadoop
vim log4j.properties
log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR

1566613127945

修改 hdfs-site.xml

<configuration>
    
<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>
 
<property>
    <name>dfs.permissions.enabled</name>
    <value>false</value>
</property>
 
<property>
    <name>dfs.nameservices</name>
    <value>ns1</value>
</property>
 
<property>
    <name>dfs.blocksize</name>
    <value>134217728</value>
</property>
<property>
    <name>dfs.ha.namenodes.ns1</name>
    <value>nn1,nn2</value>
</property>
 
<!-- nn1的RPC通訊地址,nn1所在地址 -->
<property>
    <name>dfs.namenode.rpc-address.ns1.nn1</name>
    <value>spark1:8020</value>
</property>
 
<!-- nn1的http通訊地址,外部訪問地址 -->
<property>
    <name>dfs.namenode.http-address.ns1.nn1</name>
    <value>spark1:50070</value>
</property>
 
<!-- nn2的RPC通訊地址,nn2所在地址 -->
<property>
    <name>dfs.namenode.rpc-address.ns1.nn2</name>
    <value>slave1:8020</value>
</property>
 
<!-- nn2的http通訊地址,外部訪問地址 -->
<property>
    <name>dfs.namenode.http-address.ns1.nn2</name>
    <value>slave1:50070</value>
</property>
 
<!-- 指定NameNode的元數據在JournalNode日誌上的存放位置(通常和zookeeper部署在一塊兒) -->
<property>
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://slave1:8485;slave2:8485/ns1</value>
</property>
 
<!-- 指定JournalNode在本地磁盤存放數據的位置 -->
<property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/opt/hadoop/hadoop2.8/data/journal</value>
</property>
 
<!--客戶端經過代理訪問namenode,訪問文件系統,HDFS 客戶端與Active 節點通訊的Java 類,使用其肯定Active 節點是否活躍 -->
<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>
 
<!-- 這個是使用sshfence隔離機制時才須要配置ssh免登錄 -->
<property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/root/.ssh/id_rsa</value>
</property>
 
<!-- 配置sshfence隔離機制超時時間,這個屬性同上,若是你是用腳本的方法切換,這個應該是能夠不配置的 -->
<property>
        <name>dfs.ha.fencing.ssh.connect-timeout</name>
        <value>30000</value>
</property>
 
<!-- 這個是開啓自動故障轉移,若是你沒有自動故障轉移,這個能夠先不配 -->
<property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
</property> 
    
</configuration>

修改mapred-site.xml

cp mapred-site.xml.template mapred-site.xml
在<configuration>節點內加入配置
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

<property>
    <name>mapreduce.jobhistory.address</name>
    <value>spark1:10020</value>
</property>

<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>spark1:19888</value>
</property>

修改yarn-site.xml文件

<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

<!-- Site specific YARN configuration properties -->
<property>
    <name> yarn.resourcemanager.hostname</name>
    <value>spark1</value>
</property>

<!--啓用resourcemanager ha-->

<!--是否開啓RM ha,默認是開啓的-->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>

<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>640800</value>
</property>

<property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>1024</value>
</property>

<property>
    <name>yarn.nodemanager.resource.cpu-vcores</name>
    <value>2</value>
</property>

<property> 
    <name>yarn.log.server.url</name> 
    <value>http://spark1:19888/jobhistory/logs/</value> 
</property>

<property>
    <name>yarn.resourcemanager.ha.enabled</name>
    <value>true</value>
</property>

<!--聲明兩臺resourcemanager的地址-->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>rmcluster</value>
</property>

<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>spark1,slave1</value>
</property>

<property>
<name>yarn.resourcemanager.hostname.spark1</name>
<value>spark1</value>
</property>

<property>
<name>yarn.resourcemanager.hostname.slave1</name>
<value>slave1</value>
</property>

<!--指定zookeeper集羣的地址-->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>spark1:2181,slave1:2181,slave2:2181</value>
</property>

<!--啓用自動恢復,當任務進行一半,rm壞掉,就要啓動自動恢復,默認是false-->
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>

<!--指定resourcemanager的狀態信息存儲在zookeeper集羣,默認是存放在FileSystem裏面。-->
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property> 

<configuration>
說明: yarn.nodemanager.vmem-check-enabled這個的意思是忽略虛擬內存的檢查,若是你是安裝在虛擬機上,這個配置頗有用,配上去以後後續操做不容易出問題。若是是實體機上,而且內存夠多,能夠將這個配置去掉

修改slaves

vim /opt/hadoop/hadoop2.8/etc/hadoop/slaves
slave1
slave2

將配置好的文件發送到其餘機器

scp -r /opt/hadoop root@slave1:/opt

scp -r /opt/hadoop root@slave2:/opt

啓動並測試HA

啓動全部機器的zookeeper

初始化Hadoop
/opt/hadoop/hadoop2.8/bin/hdfs namenode -format

注意: 這個操做不能屢次使用否則容易形成namdenode 的 namespaceID 與 datanode的namespaceID 不一致,從而致使namenode和 datanode的斷連。

解決辦法: https://blog.csdn.net/lukabruce/article/details/80277846

啓動 hdfs 和 yarn
cd /opt/hadoop/hadoop2.8/sbin

啓動hdfs
./start-dfs.sh
啓動yarn
./start-yarn.sh

[ 啓動全部服務可使用:./start-all.sh ]

1566615620389

第一次登陸會詢問是否鏈接,輸入yes ,而後輸入密碼就能夠了 啓動成功以後,可使用jps命令在各個機器上查看是否成功 能夠在瀏覽器輸入: ip+50070 和8088端口查看

查看hdfs Web管理頁面: http://master:50070

1566615644614

查看Hadoop 的 Application Web管理頁面:http://master:8088

1566615670617

注意: 
開啓服務時:  start-all.sh 默認只啓動一個ResourceManager另外一個須要手動到那臺機器的 /opt/hadoop/hadoop2.8/sbin 
目錄下輸入: ./yarn-daemon.sh start resourcemanager

關閉服務時:  stop-all.sh 默認只關一個ResourceManager全部也須要手動關閉ResourceManager進程 
kill -9 進程ID

1566617002940

配置Spark2.2

tar -zxvf spark-2.2.0-bin-hadoop2.7.tgz

mkdir /opt/spark
mv spark-2.2.0-bin-hadoop2.7 /opt/spark/spark2.2

環境變量配置(略,前面配過了)
source /etc/profile

修改spark-env.sh

cd /opt/spark/spark2.2/conf/

cp spark-env.sh.template spark-env.sh
vim spark-env.sh
export SCALA_HOME=/opt/scala/scala2.12.2
export JAVA_HOME=/opt/java/jdk1.8
export HADOOP_HOME=/opt/hadoop/hadoop2.8
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_HOME=/opt/spark/spark2.2
export SPARK_MASTER_IP=master
export SPARK_EXECUTOR_MEMORY=4G

修改slaves

mv slaves.template slaves
vim slaves
slave1
slave2

複製文件到其餘機器

scp -r /opt/spark root@slave1:/opt
scp -r /opt/spark root@slave2:/opt

啓動Spark

cd /opt/spark/spark2.2/sbin
./start-all.sh

查看Spark Web頁面:http://master:8080

1566618182080

配置MySQL5.1.73

卸載已經安裝的MySQL
rpm -qa | grep -i mysql

20181113170620645

rpm -e   mysql-libs-5.1.73-8.el6_8.x86_64;//通常刪除,若是提示依賴的其餘文件,則不能刪除
rpm -e  --nodeps mysql-libs-5.1.73-8.el6_8.x86_64;//強力刪除,若是有其餘依賴文件,則能夠對其進行強力刪除

使用yum安裝MySQL

yum install -y mysql-server mysql mysql-devel  //將mysql,mysql-server,mysql-devel

20181113171530380

啓動mysql服務

service mysqld start

開機自動啓動

chkconfig --list  | grep mysqld // 查看是否開機自動啓動mysql

20181113172411674

mysql -u root -p

解決初始密碼問題

ERROR 1045 (28000): Access denied for user 'mysql'@'localhost' (using password: NO)
 
 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
關閉服務
service mysqld stop
啓動臨時服務
/usr/bin/mysqld_safe --skip-grant-tables
不要關閉這個服務終端
另開一個終端輸入
mysql
修改MySQL的root密碼爲 123456
mysql> use mysql
mysql> update user set password=password("123456") where user="root";
mysql> flush privileges;
mysql> exit
ps -A | grep mysql

4532 pts/0    00:00:00 mysqld_safe
5542 pts/0    00:00:00 mysqld
關閉mysqld服務
kill -9 5542
開啓mysqld服務
service mysqld start

登陸MySQL
mysql -uroot -p
解決利用sqoop導入MySQL中文亂碼的問題(能夠插入中文,但不能用sqoop導入中文)
致使導入時中文亂碼的緣由是character_set_server默認設置是latin1

mysql> show variables like "char%";

未修改server

臨時修改命令
mysql> set character_set_server=utf8;
mysql> quit;
永久修改
gedit /etc/my.cnf
character_set_server=utf8
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
collation-server=utf8_unicode_ci
skip-character-set-client-handshake

Snipaste_2019-08-16_21-07-21

查看編碼方式
mysql> show variables like "char%";

server修改爲功

配置Hbase

tar -zxvf hbase-1.2.6-bin.tar.gz

mkdir /opt/hbase
mv hbase-1.2.6 /opt/hbase/hbase1.2

配置環境變量(略,前面配過)
source /etc/profile

修改hbase-env.sh

cd /opt/hbase/hbase1.2/conf
vim hbase-env.sh
export JAVA_HOME=/opt/java/jdk1.8
export HADOOP_HOME=/opt/hadoop/hadoop2.8
export HBASE_HOME=/opt/hbase/hbase1.2
export HBASE_CLASSPATH=/opt/hadoop/hadoop2.8/etc/hadoop
export HBASE_PID_DIR=/root/hbase/pids
export HBASE_MANAGES_ZK=false
說明:配置的路徑以本身的爲準。HBASE_MANAGES_ZK=false 是不啓用HBase自帶的Zookeeper集羣。

修改hbase-site.xml

vim hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
<description>The directory shared byregion servers.</description>
</property>
<!-- hbase端口 -->
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<!-- 超時時間 -->
<property>
<name>zookeeper.session.timeout</name>
<value>120000</value>
</property>
<!--防止服務器時間不一樣步出錯 -->
<property>
<name>hbase.master.maxclockskew</name>
<value>150000</value>
</property>
<!-- 集羣主機配置 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>
<!-- 路徑存放 -->
<property>
<name>hbase.tmp.dir</name>
<value>/root/hbase/tmp</value>
</property>
<!-- true表示分佈式 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 指定master -->
<property>
<name>hbase.master</name>
<value>master:60000</value>
</property>
</configuration>

修改regionservers

vim regionservers
slave1
slave2

複製到其餘機器

scp -r /opt/hbase root@slave1:/opt
scp -r /opt/hbase root@slave2:/opt

啓動Hbase

啓動Hadoop

啓動全部機器的zookeeper

cd /opt/hbase/hbase1.2/bin
./start-hbase.sh

查看Hbase Web頁面:http://master:16010/master-status

配置Hive

須要以前安裝了MySQL

cd 安裝包文件夾目錄
tar -zxvf apache-hive-2.1.1-bin.tar.gz
mkdir /opt/hive
mv apache-hive-2.1.1-bin /opt/hive/hive2.1
配置環境變量
vim /etc/profile
# Hive Config
export HIVE_HOME=/opt/hive/hive2.1
export HIVE_CONF_DIR=${HIVE_HOME}/conf
export PATH=.:${JAVA_HOME}/bin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${ZK_HOME}/bin:${HBASE_HOME}/bin:${HIVE_HOME}/bin:${KAFKA_HOME}/bin:${SQOOP_HOME}/bin:${FLUME_HOME}/bin:${STORM_HOME}/bin:$PATH

配置hive-site.xml

cd /opt/hive/hive2.1/conf
mv hive-default.xml.template hive-default.xml
vim hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
    <description>JDBC connect string for a JDBC metastore</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>
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
    <description>username to use against metastore database</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hive</value>
    <description>password to use against metastore database</description>
  </property>
</configuration>

添加MySQL的jdbc jar包到hive

cd jar包目錄
cp mysql-connector-java-5.1.41.jar /opt/hive/hive2.1/lib/

在MySQL裏面配置hive的元數據庫

mysql配置

service mysql start #啓動mysql服務
mysql -u root -p  #登錄shell界面
#這個hive數據庫與hive-site.xml中localhost:3306/hive的hive對應,用來保存hive元數據
mysql> create database hive; 

#將全部數據庫的全部表的全部權限賦給hive用戶,後面的hive是配置hive-site.xml中配置的鏈接密碼
mysql> grant all on *.* to hive@localhost identified by 'hive';

#刷新mysql系統權限關係表
mysql> flush privileges;
mysql> quit;
start-all.sh #啓動hadoop

須要hive元數據庫初始化
schematool -dbType mysql -initSchema

#啓動hive
hive

配置Kafka

tar -zxvf kafka_2.11-1.0.0.tgz

mkdir /opt/kafka
mv kafka_2.12-1.0.0 /opt/kafka/kafka1.0.0

配置環境變量(略,以前配過)
source /etc/profile

修改server.properties

cd /opt/kafka/kafka1.0.0/config
vim server.properties
broker.id=0 標示符(多臺服務器標示符0,1,2,3,...依次增加)
host.name=master 綁定的主機
log.dirs= /opt/kafka/kafka1.0.0/kafka-logs 數據保存的位置
log.retention.hours=168 數據的保留時間
zookeeper.connect=master:2181,slave1:2181,slave2:2181
配置說明:
標示符(多臺服務器標示符0,1,2,3,...依次增加)
broker.id=0 
綁定的主機
host.name=master 

數據保存的位置
log.dirs= /opt/kafka/kafka1.0.0/kafka-logs 
數據的保留時間(小時)
log.retention.hours=168 

Zookeeper的地址
zookeeper.connect=master:2181,slave1:2181,slave2:2181

複製到其餘機器並修改相應文件

scp -r /opt/kafka/ root@slave1:/opt/

修改slave1機器的server.properties文件

broker.id=1 
host.name=slave1

修改slave2機器的server.properties文件

broker.id=2
host.name=slave2

啓動Kafka

啓動Hadoop

啓動全部機器的zookeeper

啓動全部機器的Kafka服務(服務窗口不用關閉)

nohup /opt/kafka/kafka1.0.0/bin/kafka-server-start.sh /opt/kafka/kafka1.0.0/config/server.properties

1566620340357

建立主題(新開一個終端窗口)

/opt/kafka/kafka1.0.0/bin/kafka-topics.sh --create --zookeeper master:2181,slave1:2181 --replication-factor 1 --partitions 1 --topic chenjian

查看存在的主題

/opt/kafka/kafka1.0.0/bin/kafka-topics.sh --list --zookeeper master:2181,slave1:2181,slave2:2181

模擬發送數據 master -> slava1

/opt/kafka/kafka1.0.0/bin/kafka-console-producer.sh --broker-list master:9092,slave2:9092 --topic chenjian

1566620570209

消費數據(接收)

kafka-console-consumer.sh --zookeeper master:2181,slave1:2181,slave2:2181 --from-beginning --topic chenjian

1566620658626

配置Sqoop

tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz

mkdir /opt/sqoop
mv sqoop-1.4.7.bin__hadoop-2.6.0  /opt/sqoop/sqoop1.4.7
配置環境變量
vim /etc/profile
#sqoop config
export SQOOP_HOME=/opt/sqoop/sqoop1.4.7
export PATH=.:${JAVA_HOME}/bin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${ZK_HOME}/bin:${HBASE_HOME}/bin:${HIVE_HOME}/bin:${KAFKA_HOME}/bin:${SQOOP_HOME}/bin:$PATH

1566620788925

source /etc/profi

添加MySQL的Jdbc jar包

cp mysql-connector-java-5.1.41.jar /opt/sqoop/sqoop1.4.7/lib

修改sqoop-env.sh

cd /opt/sqoop/sqoop1.4.7/conf

mv sqoop-env-template.sh sqoop-env.sh
vim sqoop-env.sh
export HADOOP_COMMON_HOME=/opt/hadoop/hadoop2.8
export HADOOP_MAPRED_HOME=/opt/hadoop/hadoop2.8
export HBASE_HOME=/opt/hbase/hbase1.2
export HIVE_HOME=/opt/hive/hive2.1

測試Sqoop

啓動MySQL

使用Sqoop測試鏈接MySQL

sqoop list-databases --connect jdbc:mysql://192.168.37.128:3306 --username root --password 123456

1566621024430

配置Flume

tar -zxvf apache-flume-1.8.0-bin.tar.gz

mkdir /opt/flume/
mv apache-flume-1.8.0-bin.tar.gz /opt/flume/flume1.8.0/
配置環境變量
vim /etc/profile
export FLUME_HOME=/opt/flume/flume1.8.0
export FLUME_CONF_DIR=${FLUME_HOME}/conf
export PATH=.:${JAVA_HOME}/bin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${ZK_HOME}/bin:${HBASE_HOME}/bin:${HIVE_HOME}/bin:${KAFKA_HOME}/bin:${SQOOP_HOME}/bin:${FLUME_HOME}/bin:$PATH
source /etc/profile

修改flume-env.sh

cd /opt/flume/flume1.8.0/conf/

mv flume-env.sh.template flume-env.sh
vim flume-env.sh

1566621199073

修改Hbase的hbase-env.sh(未出現異常能夠忽略)

防止測試會報找不到主類的異常須要配置hbase的hbase-env.sh文件
cd /opt/hbase/hbase1.2/conf
vim hbase-env.sh
註釋掉 HBASE_CLASSPATH

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

1566621295993

查看Flume配置版本

cd /opt/flume/flume1.8.0/bin

./flume-ng version

1566621421865

測試Flume(avro source)

修改avro.conf
vim /opt/flume/flume1.8.0/conf/avro.conf
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# Describe/configure the source
a1.sources.r1.type = avro
a1.sources.r1.channels = c1
a1.sources.r1.bind = 0.0.0.0
a1.sources.r1.port = 4141
 
# Describe the sink
a1.sinks.k1.type = logger
 
# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
 
# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
啓動flume agent a1
cd /opt/flume/flume1.8.0/bin

#啓動日誌控制檯
flume-ng agent -c . -f /opt/flume/flume1.8.0/conf/avro.conf -n a1 -Dflume.root.logger=INFO,console
向指定文件寫入日誌
echo "hello world" > /root/log.00
啓動avro-client
cd /opt/flume/flume1.8.0/bin

flume-ng avro-client --host localhost -p 4141 -F /root/log.00
在啓動的服務控制檯查看結果

1566621690614

配置Storm

tar -zxvf apache-storm-0.9.7.tar.gz

mkdir /opt/storm/
mv apache-storm-0.9.7  /opt/storm/storm0.9.7/
配置環境變量
vim /etc/profile
export STORM_HOME=/opt/storm/storm0.9.7
export PATH=.:${JAVA_HOME}/bin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${ZK_HOME}/bin:${HBASE_HOME}/bin:${HIVE_HOME}/bin:${KAFKA_HOME}/bin:${SQOOP_HOME}/bin:${FLUME_HOME}/bin:${STORM_HOME}/bin:$PATH
source /etc/profile
mkdir /opt/storm/storm0.9.7/data

修改storm.yaml

cd /opt/storm/storm0.9.7/conf/

storm.zookeeper.servers:
     - "master"
     - "slave1"
     - "slave2"

nimbus.host: " master "
storm.local.dir: "/opt/storm/data"
ui.port: 8888
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703

1566621999182

將文件發送到其餘機器

scp -r /opt/storm/ root@slave1:/opt/
scp -r /opt/storm/ root@slave2:/opt/

啓動Storm

啓動全部機器的Zookeeper

安裝順序執行啓動命令

nohup /opt/storm/storm0.9.7/bin/storm ui > /dev/null 2>&1 &

nohup /opt/storm/storm0.9.7/bin/storm nimbus > /dev/null 2>&1 &

jps

1566622203213

在slave1節點執行

nohup /opt/storm/storm0.9.7/bin/storm supervisor > /dev/null 2>&1 &

1566622267061

查看Storm Web頁面: http://master:8888/index.html

1566622312214

配置Tomcat

  • 配置jdk
  • 修改Tomcat服務端口默認端口8080 (可選操做)

修改將Tomcat服務器啓動時使用的端口,例如改爲8000

修改完/home/apache-tomcat-7.0.92/conf下的server.xml文件以後,保存退出。

img

  • 啓動Tomcat

進入tomcat服務器的/home/apache-tomcat-7.0.92/bin目錄,而後執行"./startup.sh"命令啓動Tomcat服務器,以下圖所示

img

  • 在web頁面查看啓動頁面 http://localhost:8000/

img

  • 其餘計算Windows訪問Tomcat須要Linux防火牆開放Tomcat的端口

修改文件/etc/sysconfig/iptables,添加一行

img

重啓防火牆 service iptables restart

在Windows輸入 http://192.168.37.130:8000/

img

  • 將網頁上傳到Tomcat

編輯一個網頁 gedit /webPage.html 輸入以下內容

<html>
<head>web</head>
<body>
<b>this is my first web page!</b>
</body>
</html>

建立一個文件夾 mkdir /opt/tomcat/tomcat-8.5.43/webapps/testWeb

移動建立網頁 mv /webPage.html /opt/tomcat/tomcat-8.5.43/webapps/testWeb

查看網頁內容 http://localhost:8000/testWeb/webPage.html

  • 設置默認開始網頁 (可選操做) https://blog.csdn.net/russ44/article/details/52493531

附錄Linux遠程操做命令

ssh (執行指令)

ssh 用戶名@主機名 「命令」
ssh root@slave2 "ls /; echo info >> /test.txt"

scp (複製文件)

scp 本機文件 用戶名@主機名:文件路徑
scp /file  root@slave2:/home

scp 本機文件 主機名:文件路徑
scp -r /directory  slave2:/home

scp 主機名:文件路徑  本地文件路徑
scp -r  slave2:/test  /home

scp -P 端口號 主機名:文件路徑  本地文件路徑
scp -P 22  slave2:/test  /home

rsync (同步文件信息一致)

rsync -av 本地目錄 主機名:目錄路徑
rsync -av /opt/spark/ slave1:/opt/spark/

參考連接:http://www.360doc.com/content/18/0826/10/11881101_781287955.shtml

相關文章
相關標籤/搜索