用戶畫像大數據環境搭建——從零開始搭建實時用戶畫像(四)

来源:https://www.cnblogs.com/tree1123/archive/2020/06/01/13023681.html
-Advertisement-
Play Games

​ 本章我們開始正式搭建大數據環境,目標是構建一個穩定的可以運維監控的大數據環境。我們將採用Ambari搭建底層的Hadoop環境,使用原生的方式搭建Flink,Druid,Superset等實時計算環境。使用大數據構建工具與原生安裝相結合的方式,共同完成大數據環境的安裝。 Ambari搭建底層大數 ...



本章我們開始正式搭建大數據環境,目標是構建一個穩定的可以運維監控的大數據環境。我們將採用Ambari搭建底層的Hadoop環境,使用原生的方式搭建Flink,Druid,Superset等實時計算環境。使用大數據構建工具與原生安裝相結合的方式,共同完成大數據環境的安裝。

Ambari搭建底層大數據環境

Apache Ambari是一種基於Web的工具,支持Apache Hadoop集群的供應、管理和監控。Ambari已支持大多數Hadoop組件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeeper、Sqoop和Hcatalog等。

Apache Ambari 支持HDFS、MapReduce、Hive、Pig、Hbase、Zookeepr、Sqoop和Hcatalog等的集中管理。也是頂級的hadoop管理工具之一。

目前Ambari的版本已經更新到2.7,支持的組件也越來越豐富。

Hadoop的發行版本有很多,有華為發行版,Intel發行版,Cloudera發行版(CDH),MapR版本,以及HortonWorks版本等。所有發行版都是基於Apache Hadoop衍生出來的,產生這些版本的原因,是由於Apache Hadoop的開源協議決定的:任何人可以對其進行修改,並作為開源或商業產品發佈和銷售。

收費版本:
收費版本一般都會由新的特性。國內絕大多數公司發行的版本都是收費的,例如Intel發行版本,華為發行版本等。

免費版本:
不收費的版本主要有三個(都是國外廠商)。
Cloudera版本(Cloudera’s Distribution Including Apache Hadoop)簡稱”CDH“。
Apache基金會hadoop
Hontonworks版本(Hortonworks Data Platform)簡稱“HDP”。
按照順序代表了國內的使用率,CDH和HDP雖然是收費版本,但是他們是開源的,只是收取服務費用,嚴格上講不屬於收費版本。

Ambari基於HDP安裝,但是他們不同版本之間有不同的對應關係。

Ambari2.7與HDP HDF的對應關係:

也就是支持最新的版本為HDP 3.1.5 而HDP包含了大數據的基本組件如下:

已經非常的豐富了,下麵我們開始Ambari的安裝。

前期準備

前期準備分為四部分

主機,資料庫,瀏覽器,JDK

主機

請先準備好安裝Ambari的主機,開發環境可以三台就ok,其他環境依據公司機器規模而確定。

假設開發環境的三台機器為:

192.168.12.101 master
192.168.12.102 slave1
192.168.12.103 slave2

主機的最低要求如下:

軟體要求

在每個主機上:

  • yumrpm(RHEL / CentOS / Oracle / Amazon Linux)
  • zypperphp_curl(SLES)
  • apt (Debian / Ubuntu)
  • scp, curl, unzip, tarwgetgcc*
  • OpenSSL(v1.01,內部版本16或更高版本)
  • Python(帶python-devel *)

Ambari主機應至少具有1 GB RAM,並具有500 MB可用空間。

要檢查任何主機上的可用記憶體,請運行:

free -m

本地倉庫

如果網速不夠快,我們可以將包下載下來,建立本地倉庫。網速夠快可以忽略這步。

先下載安裝包

安裝httpd服務

yum install yum-utils createrepo
[root@master ~]# yum -y install httpd
[root@master ~]# service httpd restart
Redirecting to /bin/systemctl restart httpd.service
[root@master ~]# chkconfig httpd on

隨後建立一個本地yum源

mkdir -p /var/www/html/

將剛剛下載的包解壓到這個目錄下。

隨後通過瀏覽器 訪問 成功

createrepo  ./
製作本地源  修改文件裡邊的源地址
vi  ambari.repo
vi hdp.repo


#VERSION_NUMBER=2.7.5.0-72
[ambari-2.7.5.0]
#json.url = http://public-repo-1.hortonworks.com/HDP/hdp_urlinfo.json
name=ambari Version - ambari-2.7.5.0
baseurl=https://username:[email protected]/p/ambari/centos7/2.x/updates/2.7.5.0
gpgcheck=1
gpgkey=https://username:[email protected]/p/ambari/centos7/2.x/updates/2.7.5.0/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1

[root@master ambari]# yum clean all
[root@master ambari]# yum makecache
[root@master ambari]# yum repolist

軟體準備

為了方便以後的管理,我們要對機器做一些配置

安裝JDK
下載地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

rpm -ivh jdk-8u161-linux-x64.rpm
java -version
通過vi /etc/hostname 進行修改機器名  這裡主要是為了可以實現通過名稱來查找相應的伺服器

  各個節點修改成相應的名稱,分別為master,slave1.slave2
  vi /etc/hosts
192.168.12.101 master
192.168.12.102 slave1
192.168.12.103 slave2

 vi /etc/sysconfig/network
 NETWORKING=yes
HOSTNAME=master(其他的節點也對應修改)
關閉防火牆
[root@master~]#systemctl disable firewalld
[root@master~]#systemctl stop firewalld
ssh免密
ssh-keygen

ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host

不同的環境會有不同的問題存在,大家可以參考官網手冊進行相應的安裝。

安裝ambari-server

ambariserver將最終帶我們完成大數據集群的安裝

yum install ambari-server

Installing : postgresql-libs-9.2.18-1.el7.x86_64         1/4
Installing : postgresql-9.2.18-1.el7.x86_64              2/4
Installing : postgresql-server-9.2.18-1.el7.x86_64       3/4
Installing : ambari-server-2.7.5.0-124.x86_64           4/4
Verifying  : ambari-server-2.7.5.0-124.x86_64           1/4
Verifying  : postgresql-9.2.18-1.el7.x86_64              2/4
Verifying  : postgresql-server-9.2.18-1.el7.x86_64       3/4
Verifying  : postgresql-libs-9.2.18-1.el7.x86_64         4/4

Installed:
  ambari-server.x86_64 0:2.7.5.0-72
Dependency Installed:
 postgresql.x86_64 0:9.2.18-1.el7
 postgresql-libs.x86_64 0:9.2.18-1.el7
 postgresql-server.x86_64 0:9.2.18-1.el7
Complete!

啟動與設置

設置

ambari-server setup

不推薦直接用內嵌的postgresql,因為其他服務還要用mysql

安裝配置 MySql

yum install -y wget

wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

rpm -ivh mysql57-community-release-el7-10.noarch.rpm

yum -y install mysql-community-server

systemctl enable mysqld

systemctl start mysqld.service

systemctl status mysqld.service

grep "password" /var/log/mysqld.log

mysql -uroot -p

set global validate_password_policy=0;

set global validate_password_length=1;

set global validate_password_special_char_count=0;

set global validate_password_mixed_case_count=0;

set global validate_password_number_count=0;

select @@validate_password_number_count,@@validate_password_mixed_case_count,@@validate_password_number_count,@@validate_password_length;

 

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';

grant all privileges on . to 'root'@'%' identified by 'password' with grant option;

flush privileges;

exit
yum -y remove mysql57-community-release-el7-10.noarch

下載mysql驅動,放到三台的

/opt/ambari/mysql-connector-java-5.1.48.jar


初始化資料庫

mysql -uroot -p
create database ambari;
 
use ambari
 
source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql
 
 
 
CREATE USER 'ambari'@'localhost' IDENTIFIED BY 'bigdata';
 
CREATE USER 'ambari'@'%' IDENTIFIED BY 'bigdata';
 
GRANT ALL PRIVILEGES ON ambari.* TO 'ambari'@'localhost';
 
GRANT ALL PRIVILEGES ON ambari.* TO 'ambari'@'%';
 
FLUSH PRIVILEGES;

完成ambari的配置

[root@localhost download]# ambari-server setup
Using python  /usr/bin/python
Setup ambari-server
Checking SELinux...
SELinux status is 'enabled'
SELinux mode is 'permissive'
WARNING: SELinux is set to 'permissive' mode and temporarily disabled.
OK to continue [y/n] (y)? y
Customize user account for ambari-server daemon [y/n] (n)? y
Enter user account for ambari-server daemon (root):
Adjusting ambari-server permissions and ownership...
Checking firewall status...
Checking JDK...
[1] Oracle JDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8
[2] Custom JDK
==============================================================================
Enter choice (1): 2
WARNING: JDK must be installed on all hosts and JAVA_HOME must be valid on all hosts.
WARNING: JCE Policy files are required for configuring Kerberos security. If you plan to use Kerberos,please make sure JCE Unlimited Strength Jurisdiction Policy Files are valid on all hosts.
Path to JAVA_HOME: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64/jre
Validating JDK on Ambari Server...done.
Check JDK version for Ambari Server...
JDK version found: 8
Minimum JDK version is 8 for Ambari. Skipping to setup different JDK for Ambari Server.
Checking GPL software agreement...
GPL License for LZO: https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html
Enable Ambari Server to download and install GPL Licensed LZO packages [y/n] (n)? y
Completing setup...
Configuring database...
Enter advanced database configuration [y/n] (n)? y
Configuring database...
==============================================================================
Choose one of the following options:
[1] - PostgreSQL (Embedded)
[2] - Oracle
[3] - MySQL / MariaDB
[4] - PostgreSQL
[5] - Microsoft SQL Server (Tech Preview)
[6] - SQL Anywhere
[7] - BDB
==============================================================================
Enter choice (1): 3
Hostname (localhost): 
Port (3306): 
Database name (ambari): 
Username (ambari): 
Enter Database Password (bigdata): 
Configuring ambari database...
Enter full path to custom jdbc driver: /opt/ambari/mysql-connector-java-5.1.48.jar
Copying /opt/ambari/mysql-connector-java-5.1.48.jar to /usr/share/java
Configuring remote database connection properties...
WARNING: Before starting Ambari Server, you must run the following DDL directly from the database shell to create the schema: /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql
Proceed with configuring remote database connection properties [y/n] (y)? y
Extracting system views...
.....
Ambari repo file contains latest json url http://public-repo-1.hortonworks.com/HDP/hdp_urlinfo.json, updating stacks repoinfos with it...
Adjusting ambari-server permissions and ownership...
Ambari Server 'setup' completed successfully.

隨後就可以啟動了

ambari-server start

ambari-server status

ambari-server stop

訪問如下地址

http://<your.ambari.server>:8080

集群安裝

接下來進行集群的安裝,包括命名,ssh免密,選擇版本,規劃集群

最終完成集群安裝,我們就可以在頁面管理我們的集群了。

詳細官網安裝文檔pdf請在關註“實時流式計算” 後臺回覆ambari

實時計算環境搭建

由於ambari支持的druid版本較低,目前暫不支持flink,所以除kafka外的實時計算組件,需要手動安裝,也方便以後的升級。

集群安裝

集群安裝分為以下幾步:

1、在每台機器上複製解壓出來的flink目錄。

2、選擇一個作為master節點,然後修改所有機器conf/flink-conf.yaml

jobmanager.rpc.address = master主機名

3、修改conf/slaves,將所有work節點寫入

work01
work02

4、在master上啟動集群

bin/start-cluster.sh

安裝在Hadoop

我們可以選擇讓Flink運行在Yarn集群上。

下載Flink for Hadoop的包

保證 HADOOP_HOME已經正確設置即可

啟動 bin/yarn-session.sh

運行flink示常式序

批處理示例:

提交flink的批處理examples程式:

bin/flink run examples/batch/WordCount.jar

這是flink提供的examples下的批處理例子程式,統計單詞個數。

$ bin/flink run examples/batch/WordCount.jar
Starting execution of program
Executing WordCount example with default input data set.
Use --input to specify file input.
Printing result to stdout. Use --output to specify output path.
(a,5)
(action,1)
(after,1)
(against,1)
(all,2)
(and,12)
(arms,1)
(arrows,1)
(awry,1)
(ay,1)

Druid集群部署

部署建議

集群部署採用的分配如下:

  • 主節點部署 Coordinator 和 Overlord進程
  • 兩個數據節點運行 Historical 和 MiddleManager進程
  • 一個查詢節點 部署Broker 和 Router進程

未來我們可以添加更多的主節點和查詢節點

主節點建議 8vCPU 32GB記憶體

配置文件位於

conf/druid/cluster/master

數據節點建議

16 vCPU 122GB記憶體 2 * 1.9TB SSD

配置文件位於

conf/druid/cluster/data

查詢伺服器 建議 8vCPU 32GB記憶體

配置文件位於

conf/druid/cluster/query

開始部署

下載最新0.17.0發行版

解壓

tar -xzf apache-druid-0.17.0-bin.tar.gz
cd apache-druid-0.17.0

集群模式的主要配置文件都位於:

conf/druid/cluster

配置元數據存儲

conf/druid/cluster/_common/common.runtime.properties

替換

druid.metadata.storage.connector.connectURI
druid.metadata.storage.connector.host

例如配置mysql為元數據存儲

在mysql中配置好訪問許可權:

-- create a druid database, make sure to use utf8mb4 as encoding
CREATE DATABASE druid DEFAULT CHARACTER SET utf8mb4;

-- create a druid user
CREATE USER 'druid'@'localhost' IDENTIFIED BY 'druid';

-- grant the user all the permissions on the database we just created
GRANT ALL PRIVILEGES ON druid.* TO 'druid'@'localhost';

在druid中配置

druid.extensions.loadList=["mysql-metadata-storage"]
druid.metadata.storage.type=mysql
druid.metadata.storage.connector.connectURI=jdbc:mysql://<host>/druid
druid.metadata.storage.connector.user=druid
druid.metadata.storage.connector.password=diurd

配置深度存儲

將數據存儲配置為S3或者HDFS

比如配置HDFS,修改

conf/druid/cluster/_common/common.runtime.properties
druid.extensions.loadList=["druid-hdfs-storage"]

#druid.storage.type=local
#druid.storage.storageDirectory=var/druid/segments

druid.storage.type=hdfs
druid.storage.storageDirectory=/druid/segments

#druid.indexer.logs.type=file
#druid.indexer.logs.directory=var/druid/indexing-logs

druid.indexer.logs.type=hdfs
druid.indexer.logs.directory=/druid/indexing-logs

將Hadoop配置XML(core-site.xml,hdfs-site.xml,yarn-site.xml,mapred-site.xml)放在Druid中

conf/druid/cluster/_common/

配置zookeeper連接

還是修改

conf/druid/cluster/_common/

下的

druid.zk.service.host

為zk伺服器地址就可以了

啟動集群

啟動前註意打開埠限制

主節點:

derby 1527

zk 2181

Coordinator 8081

Overlord 8090

數據節點:

Historical 8083

Middle Manager 8091, 8100–8199

查詢節點:

Broker 8082

Router 8088

記得將剛纔配好的druid複製到各個節點

啟動主節點

由於我們使用外部zk 所以使用no-zk啟動

bin/start-cluster-master-no-zk-server

啟動數據伺服器

bin/start-cluster-data-server

啟動查詢伺服器

bin/start-cluster-query-server

這樣的話 集群就啟動成功了!

至此,我們的大數據環境基本搭建完畢,下一章我們將接入數據,開始進行標簽的開發,未完待續~

參考文獻

《用戶畫像:方法論與工程化解決方案》

更多實時數據分析相關博文與科技資訊,歡迎關註 “實時流式計算” 詳細ambari官網安裝文檔pdf請在關註“實時流式計算” 後臺回覆ambari


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這裡簡單總結一下Linux平臺Zabbix Agent的安裝配置,實驗測試的Zabbix版本比較老了(Zabbix 3.0.9),不過版本雖然有點老舊,但是新舊版本的安裝步驟、流程基本差別不大。這裡的總結僅僅當成一個操作手冊,後續會更新或添加部分內容。 Linux版本眾多,下麵文檔僅僅在RHEL、C... ...
  • 1、NAT模式拓撲及工作原理在一組伺服器前有一個調度器,它們是通過Switch/HUB相連接的。這些伺服器提供相同的網路服務、相同的內容,即不管請求被髮送到哪一臺伺服器,執行結果是一樣的。服務的內容可以複製到每台伺服器的本地硬碟上,可以通過網路文件系統(如NFS)共用,也 可以通過一個分散式文件系統... ...
  • 近年來,片上存儲器發展迅速,根據國際半導體技術路線圖(ITRS),隨著超深亞微米製造工藝的成熟和納米工藝的發展,晶體管特征尺寸進一步縮小,半導體存儲器在片上存儲器上所占的面積比例也越來越高。接下來宇芯電子介紹SRAM的工作原理以及工作過程。 SRAM 寫操作。寫操作就是把數據寫入指定的SRAM 存儲 ...
  • Lua基本語法 表類型 函數 Redis執行腳本 KEYS與ARGV 沙盒與隨機數 腳本相關命令 原子性和執行時間 Lua是一種高效的輕量級腳本語言,能夠方便地嵌入到其他語言中使用。在Redis中,藉助Lua腳本可以自定義擴展命令。 Lua基本語法 數據類型 空(nil),沒有賦值的變數或表的欄位值 ...
  • 問題 SQL Server在很多企業中部署在多個平臺上(Windows,Linux和Container),需要一種能支持多平臺的解決方案用於收集和展示相關的監控指標。 我選擇企業中比較流行的監控展示工具Grafana和監控指標收集工具Telegraf進行實現。這也是為了方便與企業中已經在存在監控平臺 ...
  • 一、將哈希表 key 中的欄位 field 的值設為 value 命令:hset 格式:hset key field value 127.0.0.1:6379> hset hash_key key1 v1 (integer) 1 127.0.0.1:6379> hset hash_key key2 ...
  • 表結構 student(StuId,StuName,StuAge,StuSex) 學生表 teacher(TId,Tname) 教師表 course(CId,Cname,C_TId) 課程表 sc(SId,S_CId,Score) 成績表 問題十四:查詢和“1002”號的同學學習的課程完全相同的其他 ...
  • 本文轉自Rancher Labs 簡 介 本文將介紹在高可用K3s Kubernetes集群上安裝Rancher 2.4的過程並針對MySQL利用Microsoft Azure資料庫的優勢,該資料庫消除了對etcd的依賴,併為我們提供了Azure在這一服務中的所有其他功能。 在本文中,你將瞭解到只使 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...