CDH 安裝與部署

組件版本

  • jdk-8u261-linux-x64
  • centOS 7.6
  • Cloudera Manager: 6.2.1
  • CDH: 6.2.1
  • Hadoop:3.0.0-cdh6.2.1
  • HBase:2.1.0-cdh6.2.1
  • Hive:2.1.1-cdh6.2.1
  • Kafka:2.1.1-cdh6.2.1
  • Kudu:1.9.0-cdh6.2.1
  • Oozie:5.1.0-cdh6.2.1
  • Spark:2.4.0-cdh6.2.1
  • Sqoop:1.4.7-cdh6.2.1
  • Zookeeper:3.4.5-cdh6.2.1

0.CDH介紹

  • ClouderaManager架構
Agent:安裝在每臺主機上。它負責啓動和中止進程,解壓縮配置,觸發安裝和監控主機
Management Service:執行各類監控、報警和報告功能的一組角色的服務。 
Database:存儲配置和監控信息 (元數據)
Cloudera Repository:可供Cloudera Manager分配的軟件的存儲庫
Client:用於與服務器進行交互的接口
Admin Console:管理員控制檯 
API:開發人員使用 API能夠建立自定義的Cloudera Manager應用程序

1.Linux 虛擬機基礎環境

CentOS 6.5基礎環境準備html

1.1 虛擬機環境設置(不改變已生的MAC地址)

  • VMWare中新建虛擬機,按步驟操做便可java

  • 這裏選擇本身配置的虛擬機
    - 複製三份,並將文件夾分別重命名爲cdh001,cdh002,cdh003,cdh004,cdh005
    - 雙擊.vmx文件,則在VmWare中打開,並根據相應文件夾重命名
    - 在虛擬機中進行配置三臺虛擬機的內存(任務管理器-性能-本機內存爲8G),所以每臺虛擬機內存分配不能超過2G。設置1G
    - 分配最大可佔用的磁盤空間,這裏40G
    - 配置ISO映像文件正確路徑(CentOS 64)python

  • 配置參數列表mysql

IP 主機名 環境配置 安裝
192.168.64.151 cdh001 關閉防火牆和SELinux,host映射,時鐘同步 JDK 等
192.168.64.152 cdh002 關閉防火牆和SELinux,host映射,時鐘同步 JDK 等
192.168.64.153 cdh003 關閉防火牆和SELinux,host映射,時鐘同步 JDK 等
192.168.64.154 cdh004 關閉防火牆和SELinux,host映射,時鐘同步 JDK 等
192.168.64.155 cdh005 關閉防火牆和SELinux,host映射,時鐘同步 JDK 等
  • 集羣配置
主機名 Server Agent MySQL
cdh001
cdh002
cdh003
cdh004
cdh005
  • 集羣安裝包
主機名 ZK ResourceManager JobHistory NodeManager Hive Kafka HBase(master 僅001) Phoenix(SQL on HBase) impala(Daemon全選,其它001) KUDU(TS全選,MS001) Oozle Hue
cdh001
cdh002
cdh003
cdh004
cdh005
  • 安裝包列表
將相應包上傳到相應節點的~目錄下
# 安裝傳輸工具
yum -y install lrzsz
# SecureCRT View-Command Window,後右擊,選擇 send command to all sessions
# 下載路徑
https://archive.cloudera.com/cdh6/6.2.1/parcels/
https://archive.cloudera.com/cm6/6.2.1/redhat7/yum/RPMS/x86_64/
https://archive.cloudera.com/phoenix/6.2.0/parcels/
https://archive.cloudera.com/phoenix/6.2.0/csd/
# cdh001

CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel
CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha1

cloudera-manager-agent-6.2.1-1426065.el7.x86_64.rpm
cloudera-manager-daemons-6.2.1-1426065.el7.x86_64.rpm
cloudera-manager-server-6.2.1-1426065.el7.x86_64.rpm

jdk-8u202-linux-x64.tar.gz
manifest.json
mysql-connector-java-5.1.40.jar

PHOENIX-1.0.jar
PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel.sha
PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel
# cdh002-004
cloudera-manager-agent-6.2.1-1426065.el7.x86_64.rpm
cloudera-manager-daemons-6.2.1-1426065.el7.x86_64.rpm
cloudera-manager-server-6.2.1-1426065.el7.x86_64.rpm

jdk-8u202-linux-x64.tar.gz
mysql-connector-java-5.1.40.jar
# cdh005
cloudera-manager-agent-6.2.1-1426065.el7.x86_64.rpm
cloudera-manager-daemons-6.2.1-1426065.el7.x86_64.rpm
cloudera-manager-server-6.2.1-1426065.el7.x86_64.rpm

jdk-8u202-linux-x64.tar.gz
mysql-connector-java-5.1.40.jar

mysql-community-client-5.7.31-1.el7.x86_64.rpm
mysql-community-common-5.7.31-1.el7.x86_64.rpm
mysql-community-devel-5.7.31-1.el7.x86_64.rpm
mysql-community-libs-5.7.31-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.31-1.el7.x86_64.rpm
mysql-community-server-5.7.31-1.el7.x86_64.rpm

1.2 虛擬機修改Mac和IP

網絡上解決步驟各異,其實就一句話。
只要保證vm virtual machine的.vmx配置文件、ifconfig –a、/etc/sysconfig/network-scripts/ifcfg-eth0、/etc/udev/rules.d/70-persistent-net.rules,
所使用的網卡設備和MAC地址一致便可。
  • 每臺虛擬機更換MAC地址和IP
#  打開三臺虛擬機設置,查看 MAC 地址(若相同,則要生成新的)
cdh001   00:50:56:20:4D:DB
cdh002   00:50:56:21:A4:77
cdh003   00:50:56:33:50:65
cdh003   00:50:56:30:82:D0
cdh003   00:50:56:39:A8:83
# 執行
ONBOOT改成yes:啓動時會激活網卡
BOOTROTO設置爲static,表示靜態IP
cd /etc/sysconfig/network-script
vi /etc/sysconfig/network-scripts/ifcfg-ens33
#  輸入 **reboot 重啓**三臺主機
# 輸入 ifconfig,查看ip是否正確
# 安裝 ifconfig
yum search ifconfig
yum install net-tools.x86_64 
# 輸入 ping www.baidu.com 查看可否正確聯網,CTRL+C結束終止進程
# vim 安裝
yum -y install vim*

1.3 虛擬機修改對應主機名與域名映射

# 執行修改主機名
hostnamectl set-hostname cdh003
# 打開添加域名映射
vim /etc/hosts

192.168.64.151      cdh001
192.168.64.152      cdh002
192.168.64.153      cdh003
192.168.64.154      cdh004
192.168.64.155      cdh005

1.4 虛擬機關閉防火牆

# 複製虛擬機並重覆上一步驟,每臺聯網
# 執行關閉命令
systemctl stop firewalld.service
# 執行開機禁用防火牆自啓命令
systemctl disable firewalld.service

1.5 SELinux 關閉

SELinux 是Linux的一種安全子系統(三種工做模式)
- 強制模式:違反規則,則制止,並記錄到日誌文件
- 寬容模式:違反規則,不制止,記錄到日誌文件
- 關閉linux

# 修改selinux的配置文件
vi /etc/selinux/config
# 將其中的模式改成:
SELINUX=disabled

1.6 虛擬機免密碼登陸

  • 爲何要免密登陸
    Hadoop 節點衆多, 因此通常在主節點啓動從節點, 這個時候就須要程序自動在主節點登陸到從節點中, 若是不能免密就每次都要輸入密碼, 很是麻煩git

  • 第一步:在三臺機器執行如下命令,生成公鑰與私鑰(按enter 3次)web

ssh-keygen -t rsa
  • 第二步:拷貝公鑰到同一臺機器
三臺機器將拷貝公鑰到第一臺機器,三臺機器執行命令:
ssh-copy-id cdh001
  • 第三步: 複製第一臺機器的認證到其餘機器
在第一臺機器上面執行如下命令

scp /root/.ssh/authorized_keys cdh002:/root/.ssh
scp /root/.ssh/authorized_keys cdh003:/root/.ssh
scp /root/.ssh/authorized_keys cdh004:/root/.ssh
scp /root/.ssh/authorized_keys cdh005:/root/.ssh

1.7 三臺機器時鐘同步 & 安裝一些依賴包

# 安裝
yum -y install gcc python-devel cyrus-sasl* chrony iotop yum-utils yum-plugin-downloadonly psmisc ntp ntpdate httpd createrepo wget git rsync mod_ssl cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-gssapi libxslt krb5-devel cyrus-sasl-gssapi cyrus-sasl-devel libxml2-devel libxslt-devel openldap-devel python-devel python-simplejson sqlite-devel
# 卸載 
yum -y remove mariadb-libs
# 時鐘同步
systemctl start ntpd
systemctl enable ntpd

1.8 修改系統參數

sysctl vm.swappiness=10
echo 'vm.swappiness=10'>> /etc/sysctl.conf
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.local
echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local

2. 安裝 java

# 建立安裝目錄
mkdir /usr/java
# 輸入以下指令到全部節點執行
tar -zxf jdk-8u202-linux-x64.tar.gz -C /usr/java/
cat << EOF >> /etc/profile

export JAVA_HOME=/usr/java/jdk1.8.0_202
export PATH=\$PATH:\$JAVA_HOME/bin
EOF
source /etc/profile
jps
# 檢驗安裝版本
java -version

3. 安裝 mysql

# 下載這6個MySQL的rpm包
mysql-community-client-5.7.31-1.el7.x86_64.rpm
mysql-community-common-5.7.31-1.el7.x86_64.rpm
mysql-community-devel-5.7.31-1.el7.x86_64.rpm
mysql-community-libs-5.7.31-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.31-1.el7.x86_64.rpm
mysql-community-server-5.7.31-1.el7.x86_64.rpm

# 在cdh005上執行運行(不清楚安裝包間是否相互依賴,儘可能按所給順序依次)
yum -y localinstall mysql-community-common-5.7.31-1.el7.x86_64.rpm
yum -y localinstall mysql-community-libs-5.7.31-1.el7.x86_64.rpm
yum -y localinstall mysql-community-libs-compat-5.7.31-1.el7.x86_64.rpm
yum -y localinstall mysql-community-devel-5.7.31-1.el7.x86_64.rpm
yum -y localinstall mysql-community-client-5.7.31-1.el7.x86_64.rpm
yum -y localinstall mysql-community-server-5.7.31-1.el7.x86_64.rpm

# 啓動
systemctl start mysqld
# 開機自啓動
systemctl enable mysqld

# 查看臨時密碼
cat /var/log/mysqld.log | grep password
# 臨時密碼填充到引號內,執行
mysql -uroot -p'ly0h!Gw4PyBk'

# 取消mysql密碼規範限制
set global validate_password_policy=0;
set global validate_password_length=1;

# 首次登陸設置密碼
set password=password('123456');
# 退出
quit;

# 登錄設置容許外網訪問當前的MySQL
mysql -uroot -p'123456'
use mysql;
update user set host='%' where host='localhost';
delete from user where host != '%';
flush privileges;
# 退出
quit;

# 建立ClouderaManager須要用到的幾個數據庫
# 登入
mysql -uroot -p'123456'
# 建立庫
create database cmf default character set = 'utf8';
create database amon default character set = 'utf8';
create database hive default character set = 'latin1';
create database hue default character set = 'utf8';
create database oozie default character set = 'utf8';
quit;

# 全部節點執行
mv mysql-connector-java-5.1.40.jar mysql-connector-java.jar
mkdir /usr/share/java
mv mysql-connector-java.jar /usr/share/java/

4. CM服務安裝

# 軟件包
cloudera-manager-agent-6.2.1-1426065.el7.x86_64.rpm
cloudera-manager-daemons-6.2.1-1426065.el7.x86_64.rpm
cloudera-manager-server-6.2.1-1426065.el7.x86_64.rpm

# 所有節點安裝 daemons 和 agent(安裝最好逐條輸入,防止宕機)
yum -y localinstall cloudera-manager-daemons-6.2.1-1426065.el7.x86_64.rpm
yum -y localinstall cloudera-manager-agent-6.2.1-1426065.el7.x86_64.rpm

# cdh001 上安裝 server
yum -y localinstall cloudera-manager-server-6.2.1-1426065.el7.x86_64.rpm
# 至此,CM服務安裝完畢

5. CDH等相關安裝包的移動和校驗

# 移動CDH安裝包至 /opt/cloudera/parcel-repo/ 目錄
mv CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel* /opt/cloudera/parcel-repo/

# 移動PHOENIX‐1.0.jar 至 /opt/cloudera/parcel-repo/ 目錄
mv PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel* /opt/cloudera/parcel-repo/

# 移動 manifest.json 至 /opt/cloudera/parcel-repo/ 目錄
mv manifest.json /opt/cloudera/parcel-repo/

# 移動 PHOENIX-1.0.jar 至 /opt/cloudera/csd/ 目錄
mv PHOENIX-1.0.jar /opt/cloudera/csd/

# 檢驗 CDH parcel 包是否完整(parcel包在傳輸過程當中因網絡可能缺失)
sha1sum CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel
cat CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha1
# 上面兩條命令獲得的值必須同樣

# sha1確認後改成sha
mv CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha1 CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha

# 校驗 PHOENIX sha 包是否完整
sha1sum PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel
cat PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel.sha

6. 修改server和agent的配置文件

# cdh001上修改server
vi /etc/cloudera-scm-server/db.properties

# 顯示行號
: set nu

# 12行去掉註釋把localhost改爲cdh005
# 15行去掉註釋
# 18行去掉註釋,把cmf改爲root
# 21行去掉註釋,密碼那裏填寫123456
# 28行,INIT改成 EXTERNAL
# 所有節點修改agent
vi /etc/cloudera-scm-agent/config.ini

# 15行把localhost修改成cdh001

7. 啓動CM,開始安裝CDH集羣

# 在cdh001上啓動server
systemctl start cloudera-scm-server
# 另開一個窗口,查看相關日誌。有異常就解決異常
tail -200f /var/log/cloudera-scm-server/cloudera-scm-server.log

# 下面這個異常能夠忽略 
ERROR ParcelUpdateService:com.cloudera.parcel.components.ParcelDownloaderImpl: Unable to retrieve remote parcel repository manifest

# 在所有節點上啓動agent
systemctl start cloudera-scm-agent

# 當在 cdh001上 netstat -tunlp | grep 7180 有內容時,說明咱們能夠訪問web頁面
# 若域名映射失敗,打開本地hosts文件,添加映射
C:\Windows\System32\drivers\etc\hosts
# 瀏覽器輸入
cdh001:7180,按照步驟進行安裝。

安裝1.1中的表格列出的全部安裝包到相應的主機上

# 廣義上來講,Hadoop一般是指一個更普遍的概念——Hadoop生態圈
# 狹義上來講,Hadoop是指Apache這款開源框架,它的核心組件有:
- HDFS(分佈式文件系統):解決海量數據存儲
- YARN (做業調度和集羣資源管理的框架):解決資源任務調度
- MAPREDUCE(分佈式運算編程框架):解決海量數據計算

Zookeeper

Zookeeper入門看這篇

sql

它是一個分佈式服務框架,是Apache Hadoop 的一個子項目,它主要是用來解決分佈式應用中常常遇到的一些數據管理問題.
如:統一命名服務、狀態同步服務、集羣管理、分佈式應用配置項的管理等。

YARN

Yarn 詳解shell

資源管理、任務調度的框架,主要包含三大模塊:
- ResourceManager(RM):負責全部資源的監控、分配和管理
- ApplicationMaster(AM):負責每個具體應用程序的調度和協調
- NodeManager(NM):負責每個節點的維護

Hive

Hive 高級應用數據庫

是基於Hadoop的一個數據倉庫工具,能夠將結構化的數據文件映射爲一張數據庫表,並提供類SQL查詢功能

Kafka

kafka簡明教程

使用Scala語言編寫,是一個分佈式,分區的,多副本,多訂閱者的消息隊列系統。

HBase

HBase 介紹與應用

當您須要對大數據進行隨機,實時的讀/寫訪問時。
Hbase是一種分佈式存儲的數據庫,技術上來說,它更像是分佈式存儲而不是分佈式數據庫,它缺乏不少RDBMS系統的特性,好比列類型,輔助索引,觸發器,和高級查詢語言等待。

Phoenix

Phoenix入門到精通

Phoenix是一個開源的HBASE SQL層。它不只可使用標準的JDBC API替代HBASE client API建立表,插入和查詢HBASE,也支持二級索引、事物以及多種SQL層優化。

impala

impala入門

Impala 是參照google 的新三篇論文Dremel(大批量數據查詢工具)的開源實現,功能相似shark(依賴於hive)和Drill(apache),impala 是clouder 公司主導開發並開源,基於
hive並使用內存進行計算,兼顧數據倉庫,具備實時,批處理,多併發等優勢。是使用cdh 的首選PB 級大數據實時查詢分析引擎。(也能夠單獨安裝使用,但通常都是和CDH一塊兒使用;)

KUDU

KUDU原理與應用

簡單來講:kudu是一個與hbase相似的列式存儲分佈式數據庫。
官方給kudu的定位是:在更新更及時的基礎上實現更快的數據分析

Oozie

Oozie——大數據任務調度框架

- Oozie是大數據四大協做框架之一——任務調度框架,另外三個分別爲數據轉換工具Sqoop,文件收集庫框架Flume,大數據WEB工具Hue。
- 它可以提供對Hadoop MapReduce和Pig Jobs的任務調度與協調。
- Oozie須要部署到Java Servlet容器中運行。
- 功能類似的任務調度框架還有Azkaban和Zeus。

Hue

大數據分析工程師入門(十一):Hue & Zeppelin

是cdh專門的一套web管理器,它包括3個部分hue ui,hue server,hue db。hue提供全部的cdh組件的shell界面的接口。
你能夠在hue編寫mr,查看修改hdfs的文件,管理hive的元數據,運行Sqoop,編寫Oozie工做流等大量工做。

組件測試

HIVE




# 測試語句
create table if not exists t1(id int,name string,score double) row format delimited fields terminated by ',' stored as parquet;
select count(*) from t1;
# 執行
按 Ctrl+enter

impala

# 按左側刷新
# 執行測試語句
create table t2
 (
 name string,
 dt string,
 primary key(name,dt)
 )
 partition by hash partitions 16
 stored as kudu tblproperties (
 'kudu.master_addresses' = 'cdh001:7051'
 );
# 插入數據
insert into t2 values('zhangsan','2020‐05‐06');
# 查詢
select count(*) from t2;
select * from t2;

phoenix

# phoenix 在linux上操做,選一臺機器,輸入
phoenix-sqlline
# 執行建表
create table if not exists t1(
 id Integer,
 name varchar,
 clazz varchar,
 score double
 constraint pk primary key(id)
 );
# !tables 顯示全部表
# 插入數據
upsert into t1 values(1001,'zhangsan','606',87.5);
# 退出
!quit

錯誤及解決辦法

  • 出現 rpm庫校驗失敗或者損壞 錯誤
yum clean all
yum makecache
  • 出現systemctl 命令無
更改ISO爲centOS7
  • 安裝Agent 報錯
安裝失敗。 沒法接收 Agent 發出的檢測信號。

請確保主機的名稱已正確配置。
請確保端口 7182 可在 Cloudera Manager Server 上訪問(檢查防火牆規則)。
請確保正在添加的主機上的端口 9000 和 9001 空閒。
檢查正在添加的主機上 /var/log/cloudera-scm-agent/ 中的代理日誌(某些日誌可在安裝詳細信息中找到)。
若是在 Cloudera Manager 中啓用爲代理使用 TLS 加密(管理 -> 設置 -> 安全),請確保 /etc/cloudera-scm-agent/config.ini在正在添加的主機上有 use_tls=1。重啓相應的代理,並單擊此處的重試連接。

解決:網上說是 由於開啓了Auto-TLS致使了沒法接收 Agent 發出的檢測信號,重裝時不開啓Auto-TLS
本人折騰許久,換了個安裝視頻重裝
  • 主機檢查出現網絡延遲報錯,我直接PASS
  • 最後集羣成功搭建,可是因爲筆記本內存8G,沒法啓動zookeeper了
    發郵件問人,獲得以下解答,十分感謝

此篇必有成功後續(在我進公司,有云服務器後),步驟沒有錯。

數倉實現的組件搭配

# 數據量很大,須要流處理的
- 能夠考慮 impala+kudu ,將數據存在kudu上,用impala創建,對kudu進行數據分析
- HBase 作存儲,HIVE對其進行分析 或者 phoenix 對其進行分析
# 傳統數倉項目(主要是離線數據分析)
- Hive 作查詢,HDFS上以 Parquet 格式存儲,HIVE進行數據的插入更新,在YARN上進行操做。
- impala用Hive的源數據對HDFS上的數據進行分析

搭建過程來源於B站視頻,十分感謝UP主的分享!!!

相關文章
相關標籤/搜索