用戶畫像第一章(企業級360°全方位用戶畫像_項目集羣環境搭建)

項目環境搭建

搭建好的集羣:鏈接:
虛擬機說明
用戶名:root
密碼:123456
主機名:bd001
Ip:192.168.10.20
Mysql鏈接: 用戶:root 密碼:123456
虛擬機配置10網段(根據實際情況啓動虛擬網卡)
在這裏插入圖片描述
在這裏插入圖片描述
集羣安裝路徑:/export/servers
apache-flume-1.6.0-cdh5.14.0-bin
flume
hadoop
hadoop-2.6.0-cdh5.14.0
hbase
hbase-1.2.0-cdh5.14.0
hive
hive-1.1.0-cdh5.14.0
jdk1.8.0_221
oozie
oozie-4.1.0-cdh5.14.0
scala-2.11.12
solr
solr-4.10.3-cdh5.14.0
spark
spark-2.2.0-bin-2.6.0-cdh5.14.0
sqoop
sqoop-1.4.6-cdh5.14.0
zookeeper
zookeeper-3.4.5-cdh5.14.0
軟件啓動:bash /root/bd.sh start/stop (啓動/關閉)
2144 ResourceManager
1985 SecondaryNameNode
2933 HRegionServer
2806 HMaster
1591 QuorumPeerMain
3015 Bootstrap
3240 Jps
3049 Bootstrap
1802 DataNode
2299 JobHistoryServer
1708 NameNode
2239 NodeManager

依據項目需求,使用大數據相關技術框架,安裝目錄及軟件版本具體如下圖所示:
在這裏插入圖片描述
所有軟件的安裝以後,創建軟連接,方便日後軟件的升級。

ln [OPTION]… [-T] TARGET LINK_NAME
比如
ln -s /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0 spark

在實際大數據項目中,大數據管理WEB界面,方便安裝部署和監控大數據框架組件:

1)、ClouderaManager
CM
安裝軟件目錄:/opt/parcells/…///…
2)、Ambari
開源
/etc/
/usr/lib/impala/

4.1、大數據平臺基礎環境
安裝開發語言軟件JDK1.8Scala2.11MySQL數據庫。

1)、JDK 1.8
所有的大數據框架(90%)基於Java語言編寫的
2)、Scala 2.11
Spark框架和Kafka框架使用Scala語言編寫的
3)、MySQL
- Hive 表元數據MetaStore
- Oozie和Hue元數據
- 系統:WEB Platform
業務數據存儲:tags

在這裏插入圖片描述
1)、安裝JDK1.8,配置環境變量

JAVA HOME
export JAVA_HOME=/export/servers/jdk
export PATH=PATH:PATH:{JAVA_HOME}/bin

2)、安裝Scala 2.11,配置環境變量

SCALA HOME
export SCALA_HOME=/export/servers/scala
export PATH=PATH:PATH:{SCALA_HOME}/bin

3)、安裝MySQL數據庫
按照MySQL數據庫功能:

1)、Hive MetaStore存儲
存儲元數據
2)、標籤系統WEB 平臺數據存儲
tbl_basic_tag
tbl_model
3)、Oozie 數據存儲
Oozie調度Spark2應用程序
4)、Hue 數據存儲
方便操作大數據平臺組件
5)、業務數據: tags_dat
訂單數據、訂單商品表數據、會員信息數據、行爲日誌數據

截圖如下所示:
在這裏插入圖片描述
在實際項目,MySQL數據庫字符編碼最好是UTF-8,避免亂碼出現。
此處使用數據庫版本:5.1.73,此版本較低,實際項目使用高版本(至少爲**5.6.17**)版本以上。

[root@bigdata-cdh01 ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.73 Source distribution
Copyright © 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql> show databases ;
±-------------------+
| Database |
±-------------------+
| information_schema |
| db_orders |
| hue |
| metastore |
| mysql |
| oozie |
| tags |
| tags_dat |
| test |
±-------------------+
9 rows in set (0.31 sec)
設置字符集編碼爲utf-8,具體設置參考文檔。

4.2、分佈式協作服務Zookeeper
在大數據框架中爲了高可用性,很多框架依賴於Zookeeper,所以先安裝Zookeeper框架,單機版安裝。
在這裏插入圖片描述
配置文件:$ZOOKEEPER_HOME/zoo.cfg

#The number of milliseconds of each tick
tickTime=2000
#The number of ticks that the initial
#synchronization phase can take
initLimit=10
#The number of ticks that can pass between
#sending a request and getting an acknowledgement
syncLimit=5
#the directory where the snapshot is stored.
#do not use /tmp for storage, /tmp here is just
#example sakes.
dataDir=/export/servers/zookeeper/datas/data
dataLogDir=/export/servers/zookeeper/datas/log
#the port at which the clients will connect
clientPort=2181
#the maximum number of client connections.
#increase this if you need to handle more clients
#maxClientCnxns=60
##server.1=bigdata-cdh01.itcast.cn:2888:3888
##server.2=bigdata-cdh02.itcast.cn:2888:3888
##server.3=bigdata-cdh03.itcast.cn:2888:3888
#Be sure to read the maintenance section of the
#administrator guide before turning on autopurge.
##http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
#Purge task interval in hours
#Set to “0” to disable auto purge feature
#autopurge.purgeInterval=1

創建數據和日誌目錄:

mkdir -p /export/servers/zookeeper/datas/data
mkdir -p /export/servers/zookeeper/datas/log

針對Zookeeper集羣監控工具:

1)、TaoKeeper
阿里巴巴開源ZK監控工具,目前基本沒人使用
2)、zkui
https://github.com/DeemOpen/zkui
https://www.jianshu.com/p/dac4c0bd1d2e

4.3、大數據基礎框架Hadoop
安裝大數據Hadoop框架,包含三個組件:HDFS(分佈式文件系統)、YARN(集羣資源管理和任務調度平臺)及MapReduce(海量數據處理框架)。
4.3.1、分佈式文件系統HDFS
包含服務組件:NameNodeDataNodes,實際項目中按照HDFS HA(基於JN)。
在這裏插入圖片描述
環境變量配置:$HADOOP_HOME/etc/hadoop/hadoop-env.sh

export JAVA_HOME=/export/servers/jdk

common模塊配置文件:$HADOOP_HOME/etc/hadoop/core-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
	<property>
			<name>fs.defaultFS</name>
			<value>hdfs://bigdata-cdh01.itcast.cn:8020</value>
	</property>
	<property>
			<name>hadoop.tmp.dir</name>
			<value>/export/servers/hadoop/datas</value>
	</property>

	<property>
		<name>hadoop.proxyuser.root.hosts</name>
		<value>*</value>
	</property>
	<property>
		<name>hadoop.proxyuser.root.groups</name>
		<value>*</value>
	</property>

	<property>
		<name>hadoop.proxyuser.hue.hosts</name>
		<value>*</value>
	</property>
	<property>
		<name>hadoop.proxyuser.hue.groups</name>
		<value>*</value>
	</property>
	
</configuration>

hdfs模塊配置文件:$HADOOP_HOME/etc/hadoop/hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
	<property>
			<name>dfs.replication</name>
			<value>1</value>
	</property>
	<property>
			<name>dfs.permissions.enabled</name>
			<value>false</value>
	</property>
	
	<property>
		<name>dfs.webhdfs.enabled</name>
		<value>true</value>
	</property>
</configuration>

配置文件:$HADOOP_HOME/etc/hadoop/slaves

bigdata-cdh01.itcast.cn

4.3.2、分佈式資源管理框架YARN
對集羣資源分佈式管理和調度,包含ResourceManagerNodeManagers。
在這裏插入圖片描述

面試題:
目前來說,大數據框架Spark 主要還是運行在YANR上,所以必須掌握如下兩個問題:
1)、YARN 如何資源管理和應用調度
2)、Spark on YARN:兩個DeployMode提交流程與區別
必問,死背

配置文件**$HADOOP_HOME/etc/hadoop/yarn-env.sh**:

#some Java parameters
export JAVA_HOME=/export/servers/jdk

配置文件**$HADOOP_HOME/etc/hadoop/yarn-site.xml**:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>

	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>bigdata-cdh01.itcast.cn</value>
	</property>
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
	<property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
        <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
    </property>
	
	<property>
		<name>yarn.log.server.url</name>
		<value>http://bigdata-cdh01.itcast.cn:19888/jobhistory/logs</value>
	</property>

</configuration>

4.3.3、計算處理框架MapReduce
對海量數據進行離線分析處理框架MapReduce,其中SqoopOozie底層運行都是MapReduce任務,僅僅執行MapTask
在這裏插入圖片描述
配置文件**$HADOOP_HOME/etc/hadoop/mapred-env.sh**:

export JAVA_HOME=/export/servers/jdk

配置文件**$HADOOP_HOME/etc/hadoop/mapred-site.xml**:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
	<property>
		<name>mapreduce.jobhistory.address</name>
		<value>bigdata-cdh01.itcast.cn:10020</value>
	</property>
	<property>
		<name>mapreduce.jobhistory.webapp.address</name>
		<value>bigdata-cdh01.itcast.cn:19888</value>
	</property>
</configuration>

4.4、數據倉庫框架Hive
基於HADOOP之上數據倉庫框架Hive,在企業中使用非常廣泛,底層MR計算分析數據。

針對Hive框架來說,底層計算引擎可以爲三種:
1)、MapReduce(最原始)
2)、Tez
國外
3)、Spark
從Hive 2.0開始,官方建議使用Spark/Tez作爲計算引擎,不推薦使用MR。

在這裏插入圖片描述
安裝Hive數據倉庫依賴的MySQL數據庫,存儲元數據MetaData,官方要求的MySQL數據庫版本如下所示:
在這裏插入圖片描述
配置文件:$HIVE_HOME/conf/hive-env.sh

#Set HADOOP_HOME to point to a specific hadoop install directory
HADOOP_HOME=/export/servers/hadoop
#Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/export/servers/hive/conf

配置文件:$HIVE_HOME/conf/hive-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
	<property>
	  <name>javax.jdo.option.ConnectionURL</name>
	  <value>jdbc:mysql://bigdata-cdh01.itcast.cn:3306/metastore?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8</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>root</value>
	  <description>username to use against metastore database</description>
	</property>

	<property>
	  <name>javax.jdo.option.ConnectionPassword</name>
	  <value>123456</value>
	  <description>password to use against metastore database</description>
	</property>

	<property>
	  <name>hive.cli.print.header</name>
	  <value>true</value>
	  <description>Whether to print the names of the columns in query output.</description>
	</property>

	<property>
	  <name>hive.cli.print.current.db</name>
	  <value>true</value>
	</property>
	<property>
	  <name>hive.mapred.mode</name>
	  <value>strict</value>
	</property>
	<property>
	  <name>hive.metastore.uris</name>
	  <value>thrift://bigdata-cdh01.itcast.cn:9083</value>
	</property>
	<property>
	  <name>hive.metastore.warehouse.dir</name>
	  <value>/user/hive/warehouse</value>
	</property>
</configuration>

注意:Hive MetaStore數據庫字符編碼必須使用latin,不能是utf-8,建議先創建Hive元數據數據庫。
在這裏插入圖片描述
將MySQL數據庫驅動包放入$HIVE_HOME/lib目錄下。

1)、Hive MetaStore
可以在不同機器上啓動多個,一臺機器啓動一個,默認口號時9083
2)、Hive 數據倉庫目錄
實際項目中不會使用默認值路徑,需要配置

hive.metastore.warehouse.dir
/user/hive/warehouse

3)、啓動HiveServer2
將Hive當做服務啓動

4.5、大數據NoSQL數據庫HBase
基於HDFS之上,存儲海量數據NoSQL數據庫HBase,面向列存儲,可以存儲幾十億行和百萬列。
在這裏插入圖片描述

面試題:
1)、從HBase表中讀寫數據流程
首先連接ZK地址,找Meta表的Region所在的RegionServer地址信息
讀流程:
MemStore 、StoreFile、BlockCache(讀緩存)
寫流程:
WAL(預寫日誌)、MemStore、StoreFile(Compaction:Minor、Major)
2)、HBase表的設計
就是RowKey設計:
唯一性、避免熱點、前綴匹配查詢
3)、HBase 性能優化
數據壓縮、表預分區,JVM設置,RegionServer內存分配設置
HBase是否有單點故障:沒有,可以啓動多個HMaster
如果HBase集羣中HMaster宕機了,短時間內是否影響Client讀寫表的數據:不影響

配置文件:$HBASE_HOME/conf/hbase-env.sh

#The java implementation to use. Java 1.7+ required.
export JAVA_HOME=/export/servers/jdk
#Tell HBase whether it should manage it’s own instance of Zookeeper or not.
export HBASE_MANAGES_ZK=false

配置文件:$HBASE_HOME/conf/hbase-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>

	<!-- 指定HBase框架運行臨時目錄 -->
	<property >
		<name>hbase.tmp.dir</name>
		<value>/export/servers/hbase/data/tmp</value>
	</property>

	<!-- HBASE 表中數據存儲在HDFS上根目錄 -->
	<property >
		<name>hbase.rootdir</name>
		<value>hdfs://bigdata-cdh01.itcast.cn:8020/hbase</value>
	</property>

	<!-- HBase Cluster 集羣運行在分佈式模式下,僞分佈式也是分佈式 -->
	<property >
		<name>hbase.cluster.distributed</name>
		<value>true</value>
	</property>

	<!-- 告知HBase Cluster所依賴的ZK Cluster地址 -->
	<property>
		<name>hbase.zookeeper.quorum</name>
		<value>bigdata-cdh01.itcast.cn</value>
	</property>

	<!-- 配置壓縮SNAPPY和LZ4 -->
	<!-- 
	<property>
		<name>hbase.master.check.compression</name>
		<value>true</value>
	</property>

	<property>
		<name>hbase.regionserver.codecs</name>
		<value>lz4</value>
	</property>
        -->

</configuration>

配置文件:$HBASE_HOME/conf/regionservers

bigdata-cdh01.itcast.cn

4.6、大數據生態組件
生態組件中有SQOOP、FLUME、OOZIE和HUE,方便數據採集及任務調度查看。
4.6.1、數據轉換工具SQOOP
SQOOP底層爲MapReduce程序,僅僅運行MapTask,並行的將數據在RDBMs與HDFS/HIVE/HBase之間導入導出。
在這裏插入圖片描述
4.6.2、數據實時抽取採集Flume
實時監控日誌數據,將數據採集存儲到HDFS上,架構圖如下:
在這裏插入圖片描述

針對每個服務器產生的日誌數據,啓動一個Agent,實時監控數據,採集存儲到HDFS上。
1)、Source
2)、Channel
3)、Sink

面試題:
Flume採集數據時,考慮架構:高可用和負載均衡
案例:
1)、Flume 高可用:
https://blog.csdn.net/jinYwuM/article/details/82594618
2)、Flume 負載均衡
https://blog.csdn.net/silentwolfyh/article/details/51165804

4.6.3、任務調度框架Oozie
使用Oozie調度執行任務(工作流WorkFlow和調度器Coordinator),架構如下:
在這裏插入圖片描述

Oozie 任務調度框架:
1)、工作流WorkFlow - 簡單任務調度
將每個任務封裝在Workf1ow中調度執行
2)、調度器Coordinator
針對WorkFlow指定調度策略(時間,數據可用性)
3)、Bundle
批量調度執行,有點類似事務
Oozie中每個Workflow執行時都是一個MapReduce任務,僅僅只有一個MapTask,用於啓動Action。

4.6.4、大數據可視化工具Hue
Hue爲大數據生態系統一體可視化工具,操作HDFs、查看任務執行及集成Hive編寫SQL,尤其與Oozie集成,更加方便的調度執行任務工作流。
在這裏插入圖片描述
4.7、大數據分析框架Spark
大數據分析框架Spark,集成批處理、交互式分析和流式處理及高級數據分析(圖計算和機器學習)爲一體的框架,從Spark 2.0開始,所有應用入口爲SparkSession,數據封裝在DataFrame中。
在這裏插入圖片描述
配置文件:$SPARK_HOME/conf/spark-env.sh

JAVA_HOME=/export/servers/jdk
SCALA_HOME=/export/servers/scala
HADOOP_CONF_DIR=/export/servers/hadoop/etc/hadoop
YARN_CONF_DIR=/export/servers/hadoop/etc/hadoop
SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://bigdata-cdh01.itcast.cn:8020/spark/eventLogs/ -Dspark.history.fs.cleaner.enabled=true"

配置文件:$SPARK_HOME/conf/spark-defaults.conf

spark.eventLog.enabled true
spark.eventLog.dir hdfs://bigdata-cdh01.itcast.cn:8020/spark/eventLogs/
spark.eventLog.compress true
spark.yarn.jars hdfs://bigdata-cdh01.itcast.cn:8020/spark/jars/*
spark.yarn.historyServer.address bigdata-cdh01.itcast.cn:18080
spark.sql.warehouse.dir /user/hive/warehouse

運行Spark 圓周率PI程序,提交到YARN上執行:

#!/bin/bash
SPARK_HOME=/export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0
${SPARK_HOME}/bin/spark-submit
–master yarn
–deploy-mode cluster
–class org.apache.spark.examples.SparkPi
–driver-memory 512m
–driver-cores 1
–executor-memory 512m
–executor-cores 1
–num-executors 2
–queue default
hdfs://bigdata-cdh01.itcast.cn:8020/spark/spark-examples_2.11-2.2.0.jar
10

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章