超詳細!搭建本地大資料研發環境(16G記憶體+CDH)

獨孤風發表於2021-07-27

工欲善其事必先利其器,在經過大量的理論學習以後,需要有一個本地的研發環境來進行練手。已經工作的可以不依賴於公司的環境,在家也可以隨意的練習。而自學大資料的同學,也可以進行本地練習,大資料是一門偏實踐的學科,在找工作之前進行一些實踐操作,也更利於對大資料知識的理解。

本文將從頭開始詳細的記錄整個大資料環境的搭建過程,本文所使用的膝上型電腦記憶體為16G,將使用CDH6.3.2管理整個大資料叢集。

由於cloudera官網從2021年2月1日起全面移除的非訂閱使用者的下載連結,所以本文所有的安裝包都已經備份,可以關注 大資料流動 回覆 CDH16G 獲取。

本文共四個部分,一定要保證每一個部分都安裝成功以後再向下進行。

首先要安裝好VMwareWorkstation軟體,隨後新建三臺centos系統的虛擬機器,在三臺虛擬機器中搭建CDH大資料管理工具,最後使用CDH搭建大資料叢集。

一、安裝VMwareWorkstation虛擬化軟體

首先我們使用VMwareWorkstation來快速的進行虛擬機器的新建。VMwareWorkstation是一款功能強大的桌面虛擬計算機軟體,我們使用的版本為VMwareWorkstation 16.1.2。

1、開啟安裝程式,點選下一步。

2、選擇接受條款,點選下一步。

3、修改安裝路徑,增強型虛擬鍵盤主要作用是提高安全性,這裡不勾選。點選下一步。

4、將檢查更新和體驗提升都去掉,點選下一步。

5、快捷方式看自己的情況選擇吧,點選下一步。

6、點選安裝,開始進行虛擬機器安裝。

7、安裝完成後點選 許可證 用序號產生器生成的金鑰進行產品啟用。

8、點選完成,大功告成。VMwareWorkstation就成功安裝並啟用了。

這樣,第一部分VMwareWorkstation軟體已經搭建完成。

二、新建三臺Centos虛擬機器

首先準備Centos7的映象檔案,CentOS-7-x86_64-DVD-1908.iso。

請注意三臺虛擬機器的CPU初次設定為1核,記憶體設定為4G(這樣虛擬機器佔用12G,留出一些空間),硬碟為20G,這些以後也是可以修改的。

新建虛擬機器

1、開啟VMwareWorkstation,選擇新建虛擬機器

2、選擇自定義安裝,點選下一步。

3、這裡不用修改,是VMware的版本和一些限制說明,點選下一步。

4、這裡先選擇稍後安裝作業系統,點選下一步。

5、選擇系統為Linux,版本為Centos7 64位,點選下一步。

6、修改虛擬機器名稱,位置,點選下一步。

7、CPU預設為1核,點選下一步。

8、記憶體設定為4GB,點選下一步。

9、網路使用預設的NAT,點選下一步。

10、I/O 使用預設

11、磁碟型別預設

12、建立新的虛擬磁碟

13、設定磁碟大小為20GB

14、預設檔名

15、最後可以看到這些設定,點選完成。

16、虛擬機器新建完成,可以繼續編輯虛擬機器,將安裝映象掛載。

安裝Centos系統

1、開啟此虛擬機器

注意:點選進入虛擬機器操作,要退出來的話使用 Ctrl + Alt

2、選擇安裝centos7

選擇語言

進行基本設定

設定密碼 Bigdataflowing

提示重啟電腦

等待安裝完成,完成後重啟。進入作業系統

設定虛擬機器網路

此時的虛擬機器是無法上網的,需要對網路進行設定。

首先設定主機的網路共享,再看一下vnet8的網路ip,我的是192.168.137.0

在vmvare的虛擬網路編輯器中,設定ip

進入虛擬機器進行網路卡設定

進入網路卡設定目錄
cd /etc/sysconfig/network-scripts/
設定網路卡
vi ifcfg-ens33
設定如下(重點是下面幾個設定,固定IP)
BOOTPROTO=static
IPADDR=192.168.137.101
NETMASK=255.255.255.0
GATEWAY=192.168.137.1
ONBOOT=yes

設定完成後重啟網路卡
service network restart
重啟後驗證上網情況
ping www.baidu.com

xshell遠端連線機器

一直在虛擬機器裡操作是不方便的,所以我們通過xshell進行遠端連線。網路已通,所以我們用使用者名稱密碼連線即可。

上面操作完成後,我們可以使用vmvare的克隆功能,快速的複製出其他兩臺虛擬機器。不過要記得複製完以後。進入系統把ip修改為不同的地址。

克隆虛擬機器

克隆自 虛擬機器中的當前狀態

完整克隆

克隆完成後,修改node02和node03的網路設定。

進入網路卡設定目錄
cd /etc/sysconfig/network-scripts/
設定網路卡
vi ifcfg-ens33
設定如下(node02改成192.168.137.102   node03改成192.168.137.103 )
IPADDR=192.168.137.101

此時將三臺虛擬機器開啟,最終的效果三臺虛擬機器正常執行,xshell可以遠端同時操作這三臺機器。

這樣第二部分,三臺centos虛擬機器新建完成,下面我們可以進行CDH環境的安裝了。

三、使用CDH搭建Hadoop叢集環境

CDH(Cloudera’s Distribution, including Apache Hadoop),是Hadoop眾多分支中的一種,由Cloudera維護,基於穩定版本的Apache Hadoop構建,並整合了很多補丁,可直接用於生產環境。

我們使用CDH6.3.2的版本進行安裝。

CDH分為Cloudera Manager管理平臺和CDH parcel(parcel包含各種元件的安裝包),需要先安裝CM,再安裝parcel。

CM 6.3.1,CDH 6.3.2 (6.3.3版本及以上的要收費了)

元件版本支援情況

https://docs.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_cdh_63_packaging.html#cdh_630_packaging

準備工作

1、修改檔案開啟限制

vi /etc/security/limits.conf

* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* soft nproc 131072

2、關閉防火牆

systemctl disable firewalld
systemctl stop firewalld

3、修改主機名及hosts

依次修改主機名
vi /etc/hostname
修改hosts檔案

vi /etc/hosts
192.168.137.101 node01
192.168.137.102 node02
192.168.137.103 node03
生效
source /etc/hosts

4、免密設定

node01 設定

ssh-keygen -t rsa
一路回車
ssh-copy-id node02
ssh-copy-id node03
輸入密碼

5、安裝jdk

scp jdk-8u221-linux-x64.rpm node02:/opt/
scp jdk-8u221-linux-x64.rpm node03:/opt/

rpm -ivh jdk-8u221-linux-x64.rpm

java -version

vim /etc/profile

# 末尾追加以下內容
export JAVA_HOME=/usr/java/default
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

source /etc/profile

echo $JAVA_HOME

6、關閉selinux

//臨時生效selinux設定
setenforce 0
//修改配置檔案
vi /etc/selinux/config
把SELINUX=enforcing修改為SELINUX=disabled

7、安裝ntp服務

// 安裝 ntp 服務
yum install -y ntp
 
// 開啟並設定開機自啟ntp服務
systemctl start ntpd
systemctl enable ntpd
 
// 檢視ntp服務狀態
systemctl status ntpd

8、node01安裝Mysql

移除mariadb  
yum remove mariadb-libs.x86_64

wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm

yum localinstall ./mysql80-community-release-el7-1.noarch.rpm

yum install mysql-community-server

service mysqld start 

# 檢視臨時密碼
grep 'temporary password' /var/log/mysqld.log


# 登入
mysql -uroot -p
# 輸入剛才的密碼


ALTER USER 'root'@'localhost' IDENTIFIED BY 'Bigdataflowing@123';
# 新建scm使用者
CREATE USER 'scm'@'%' IDENTIFIED BY 'Bigdataflowing@123';
grant all privileges on *.* to 'scm'@'%' with grant option;
flush privileges;

新建CDH所需的資料庫:

CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE reports DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

create user 'root'@'localhost' identified by  'Bigdataflowing@123';
grant all privileges on *.* to 'root'@'%' with grant option;

flush privileges; 

9、各節點準備mysql8的驅動

wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz

tar -zxf mysql-connector-java-5.1.46.tar.gz

mkdir /usr/share/java/

cp mysql-connector-java-5.1.46/mysql-connector-java-5.1.46-bin.jar /usr/share/java/mysql-connector-java.jar

安裝CDH

1、配置本地yum源

node01 安裝httpd createrepo並設定開機自啟動:
yum -y install httpd createrepo
systemctl start httpd
systemctl enable httpd

將包放在目錄下
mkdir -p /var/www/html/cloudera-repos/cm6
將檔案傳入此目錄下
createrepo .


配置本地yum源
備份  cp -r /etc/yum.repos.d  /etc/yum.repos.d.bak
cd /etc/yum.repos.d/
vim cloudera-manager.repo

[cloudera-manager]
name=Cloudera Manager 6.3.1
baseurl=http://node01/cloudera-repos/cm6
gpgcheck=0
enabled=1

yum clean all && yum makecache

驗證成功,瀏覽器訪問 http://192.168.127.101/cloudera-repos/cm6/

分發包
scp -r cloudera-manager.repo root@node02:$PWD
scp -r cloudera-manager.repo root@node03:$PWD
其他節點
yum clean all && yum makecache

node01安裝cloudera manager server

yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server

安裝完CM後/opt/ 下會出現cloudera目錄,上傳cdh parcel 檔案到/opt/cloudera/parcel-repo/


chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/*

初始化資料庫

cd /opt/cloudera/cm/schema/   
./scm_prepare_database.sh -h localhost -P 3306 mysql scm scm Bigdataflowing@123

成功訊息
[main] DbCommandExecutor              INFO  Successfully connected to database.
All done, your SCM database is configured correctly!

3、node02 node03安裝agent

yum install -y cloudera-manager-daemons cloudera-manager-agent

配置Agent檔案:vim /etc/cloudera-scm-agent/config.ini

將 server_host=localhost

更改為: server_host=node01

啟動

server 和agent 一起啟動,報錯看log /var/log/cloudera-scm-server

node01

systemctl start cloudera-scm-server
systemctl enable cloudera-scm-server

node02 node03

systemctl start cloudera-scm-agent & systemctl enable cloudera-scm-agent

訪問網址 http://192.168.137.101:7180/cmf/login成功!

賬號密碼 admin/admin

那麼CDH管理工具已經安裝完成,下面我們使用CDH安裝Hadoop叢集環境。

四、安裝部署HADOOP大資料叢集

開始安裝

同意條款

選擇安裝版本,可以選擇試用或者免費版

開始安裝,輸入叢集名稱

選擇主機

這裡有坑,直接選擇後邊沒法改儲存庫

這裡可以點上方按鈕進入主頁,先刪除主機,再加回來

按下面設定好,大部分已經預設

JDK已經安裝 不用選

機器賬號密碼

這裡會做一些檢測,基本是一些警告,選擇 i understand 繼續。

下面進入到元件的安裝,由於記憶體有限,我們選擇自定義服務,先只安裝hdfs和hive,zookeeper,其他的元件後續也可以增加。

要設定節點的分配,儘量平均就可以。

這裡全部連node01的mysql庫

一些hdfs設定,可以預設

等待安裝中。。

安裝基本完成。

安裝完成!可以愉快的玩耍了。

再提醒一下

由於cloudera官網從2021年2月1日起全面移除的非訂閱使用者的下載連結,所以本文所有的安裝包都已經備份,可以關注 大資料流動 回覆 CDH16G 獲取。

踩坑大全

1、客戶機作業系統已禁用 CPU,請關閉或重置虛擬機器。

大部分是Vmvare版本及映象問題,使用Vmvare16.1.2版本

2、mysql版本:'for the right syntax to use near 'identified by 'password' with grant option'

問題分析:mysql版本8.0.13,在給新使用者授權時,發生了變化:

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by 'password' with grant option' at line 5, Time: 0.000000s

出錯的語句:

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

修正後的語句:分開三次執行

建立賬戶

create user 'root'@'172.16.10.203' identified by 'password'

賦予許可權,with grant option這個選項表示該使用者可以將自己擁有的許可權授權給別人

grant all privileges on . to 'root'@'172.16.10.203' with grant option

改密碼&授權超使用者,flush privileges 命令本質上的作用是將當前user和privilige表中的使用者資訊/許可權設定從mysql庫(MySQL資料庫的內建庫)中提取到記憶體裡

flush privileges;

3、missing requires of libmysqlclient.so.18()(64bit)

錯誤提示安裝依賴的庫檔案沒有找到: libmysqlclient.so.18()(64bit)

解決:
缺少Percona-XtraDB-Cluster-shared-55-5.5.37-25.10.756.el6.x86_64.rpm這個包

wget http://www.percona.com/redir/downloads/Percona-XtraDB-Cluster/5.5.37-25.10/RPM/rhel6/x86_64/Percona-XtraDB-Cluster-shared-55-5.5.37-25.10.756.el6.x86_64.rpm

rpm -ivh Percona-XtraDB-Cluster-shared-55-5.5.37-25.10.756.el6.x86_64.rpm

4、cm啟動後無法訪問

centos7會開啟ipv6,需要禁用掉

vi /etc/default/grub

GRUB_CMDLINE_LINUX="ipv6.disable=1 crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"

grub2-mkconfig -o /boot/grub2/grub.cfg

5、Parcel hash file missing: CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha

缺少CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha檔案,新增到指定目錄

6、Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was

14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error"

yum源有問題,修改 /etc/yum.repos.d下yum配置檔案

7、無法安裝 cloudera-manager-agent 包

檢視log看具體報錯資訊

相關文章