文章目錄
機器準備
準備3臺機器,操作系統CentOS7.2,配置:至少2核8G
這裏我用了3臺阿里雲的主機(建議學習的小夥伴使用新加坡的機器,下載安裝包飛快)
一 節點初始化
1.1 設置所有節點的hosts文件
ip地址設置爲內網地址
echo "172.21.119.114 hadoop001">> /etc/hosts
echo "172.21.119.112 hadoop002">> /etc/hosts
echo "172.21.119.113 hadoop003">> /etc/hosts
1.2 關閉防火牆和清空規則
systemctl stop firewalld
systemctl disable firewalld
iptables -F
1.3 關閉所有節點的selinux
將SELINUX=enforcing改爲SELINUX=disabled 設置後需要重啓才能⽣生效
vi /etc/selinux/config
1.4 設置所有節點的時區
設置所有節點爲 亞洲上海時區
timedatectl set-timezone Asia/Shanghai
查看是否設置成功
timedatectl status
如果timedatectl
命令不會使用,可以使用幫助命令
timedatectl --help
1.5 時鐘同步
這裏才用主從同步,就是hadoop001服務器跟互聯網時間同步,hadoop002和hadoop003服務器根據這臺服務器的時間進行同步
三臺機器一起安裝ntp
yum install -y ntp
1.5.1 選取hadoop001爲ntp主節點
vi /etc/ntp.conf
在ntp.conf文件添加下面兩行
#當外部時間不不可⽤用時,可使⽤用本地硬件時間
server 127.127.1.0 iburst local clock
#允許哪些⽹網段的機器器來同步時間,我這裏的網段是172.21.119
restrict 172.21.119.0 mask 255.255.255.0 nomodify notrap
開啓ntp服務並查看狀態
systemctl start ntpd
systemctl status ntpd
1.5.2 從節點同步
設置hadoop002和hadoop003根據主節點hadoop001設置時間同步
先停止和禁用ntp
#停止
systemctl stop ntpd
#禁用
systemctl disable ntpd
設置同步主節點
ntpdate hadoop001
從下圖可以看到hadoop002與主節點相差的時間間隔
hadoop003 也執行1.5.2 步驟
1.5.3 添加定時任務
每天0點0分,從節點去同步主節點時間
hadoop002,hadoop003從節點都添加如下定時任務
crontab -e
00 00 * * * /usr/sbin/ntpdate hadoop001
二 jdk部署
2.1 jdk版本選擇
選擇jdk的時候看下官網的推薦,有些版本會有問題
地址:https://docs.cloudera.com/documentation/enterprise/release-notes/topics/rn_consolidated_pcm.html#pcm_jdk
jdk下載地址:https://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html
下載好之後,上傳到hadoop001機器
然後把jdk安裝包拷貝到hadoop002,hadoop003
scp jdk-8u181-linux-x64.tar.gz hadoop002:/root
scp jdk-8u181-linux-x64.tar.gz hadoop003:/root
三臺機器一起創建java目錄(這裏java一定要安裝下面這個目錄,否則後面會出現問題)
mkdir /usr/java
然後三臺機器一起解壓
tar -zxvf /root/jdk-8u181-linux-x64.tar.gz -C /usr/java
三臺機器修改用戶和用戶組
chown -R root:root /usr/java
三臺機器添加java環境變量
先編輯/etc/profile
vi /etc/profile
再添加如下的環境
# java env
export JAVA_HOME=/usr/java/jdk1.8.0_181
export PATH=${JAVA_HOME}/bin:$PATH
然後生效環境變量,查看是否安裝好
到這裏說明jdk安裝ok
三 MySQL 安裝
安裝MySQL建議使用5.7 經典版本,別搞個5.8 版本,到時候cdh不支持
可以查看官網的支持版本(如果你使用的cdh版本是5.0-5.9,那麼MySQL 5.7不支持)
https://docs.cloudera.com/documentation/enterprise/release-notes/topics/rn_consolidated_pcm.html#cdh_cm_supported_db
MySQL下載地址
https://dev.mysql.com/downloads/mysql/5.7.html#downloads
下載好之後上傳到hadoop001
1.將mysql解壓,並重命名
tar -zxvf mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz -C /usr/local
mv /usr/local/mysql-5.7.11-linux-glibc2.5-x86_64 /usr/local/mysql
2.創建必要的數據目錄
cd /usr/local/mysql
mkdir arch data tmp
3.編輯my.cnf文件
vi /etc/my.cnf
添加如下內容(我們生產的配置文件,生產上只要把pool size改成8G左右就行了)
[client]
port = 3306
socket = /usr/local/mysql/data/mysql.sock
default-character-set=utf8mb4
[mysqld]
port = 3306
socket = /usr/local/mysql/data/mysql.sock
skip-slave-start
skip-external-locking
key_buffer_size = 256M
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 4M
query_cache_size= 32M
max_allowed_packet = 16M
myisam_sort_buffer_size=128M
tmp_table_size=32M
table_open_cache = 512
thread_cache_size = 8
wait_timeout = 86400
interactive_timeout = 86400
max_connections = 600
# Try number of CPU's*2 for thread_concurrency
#thread_concurrency = 32
#isolation level and default engine
default-storage-engine = INNODB
transaction-isolation = READ-COMMITTED
server-id = 1739
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
pid-file = /usr/local/mysql/data/hostname.pid
#open performance schema
log-warnings
sysdate-is-now
binlog_format = ROW
log_bin_trust_function_creators=1
log-error = /usr/local/mysql/data/hostname.err
log-bin = /usr/local/mysql/arch/mysql-bin
expire_logs_days = 7
innodb_write_io_threads=16
relay-log = /usr/local/mysql/relay_log/relay-log
relay-log-index = /usr/local/mysql/relay_log/relay-log.index
relay_log_info_file= /usr/local/mysql/relay_log/relay-log.info
log_slave_updates=1
gtid_mode=OFF
enforce_gtid_consistency=OFF
# slave
slave-parallel-type=LOGICAL_CLOCK
slave-parallel-workers=4
master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log_recovery=ON
#other logs
#general_log =1
#general_log_file = /usr/local/mysql/data/general_log.err
#slow_query_log=1
#slow_query_log_file=/usr/local/mysql/data/slow_log.err
#for replication slave
sync_binlog = 500
#for innodb options
innodb_data_home_dir = /usr/local/mysql/data/
innodb_data_file_path = ibdata1:1G;ibdata2:1G:autoextend
innodb_log_group_home_dir = /usr/local/mysql/arch
innodb_log_files_in_group = 4
innodb_log_file_size = 1G
innodb_log_buffer_size = 200M
#根據生產需要,調整pool size
innodb_buffer_pool_size = 2G
#innodb_additional_mem_pool_size = 50M #deprecated in 5.6
tmpdir = /usr/local/mysql/tmp
innodb_lock_wait_timeout = 1000
#innodb_thread_concurrency = 0
innodb_flush_log_at_trx_commit = 2
innodb_locks_unsafe_for_binlog=1
#innodb io features: add for mysql5.5.8
performance_schema
innodb_read_io_threads=4
innodb-write-io-threads=4
innodb-io-capacity=200
#purge threads change default(0) to 1 for purge
innodb_purge_threads=1
innodb_use_native_aio=on
#case-sensitive file names and separate tablespace
innodb_file_per_table = 1
lower_case_table_names=1
[mysqldump]
quick
max_allowed_packet = 128M
[mysql]
no-auto-rehash
default-character-set=utf8mb4
[mysqlhotcopy]
interactive-timeout
[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M
4.創建用戶和用戶組
groupadd -g 101 dba
useradd -u 514 -g dba -G root -d /usr/local/mysql mysqladmin
如果mysqladmin用戶已經存在,可以執行下面命令
usermod -u 514 -g dba -G root -d /usr/local/mysql mysqladmin
5.copy 環境變量配置文件至mysqladmin用戶的home目錄中,爲了後面步驟配置個人環境變量
cp /etc/skel/.* /usr/local/mysql
6.賦權和用戶組
chown mysqladmin:dba /etc/my.cnf
chmod 640 /etc/my.cnf
chown -R mysqladmin:dba /usr/local/mysql
chmod -R 755 /usr/local/mysql
7.配置環境變量
先切換到mysqladmin用戶
su - mysqladmin
編輯環境配置文件(注意這裏編輯的是.bashrc)
vi ~/.bashrc
添加如下內容
export MYSQL_BASE=/usr/local/mysql
export PATH=${MYSQL_BASE}/bin:$PATH
然後生效配置文件
source /usr/local/mysql/.bashrc
8.配置服務及開機自啓動
先切換到root用戶,再執行下面命令
cd /usr/local/mysql
#將服務文件拷貝到init.d下,並重命名爲mysql
cp support-files/mysql.server /etc/rc.d/init.d/mysql
#賦予可執行權限
chmod +x /etc/rc.d/init.d/mysql
#添加服務
chkconfig --add mysql
9.安裝libaio
yum -y install libaio
10.初始化
切換到mysqladmin用戶
su - mysqladmin
執行初始化命令
bin/mysqld \
--defaults-file=/etc/my.cnf \
--user=mysqladmin \
--basedir=/usr/local/mysql/ \
--datadir=/usr/local/mysql/data/ \
--initialize
等待幾十秒就ok
11.查看臨時密碼
臨時密碼在data目錄下的hostname.err裏,通過下面命令查看
cat hostname.err | grep password
下圖中爲安裝之後的臨時密碼
12.啓動mysql
service mysql start
13.登陸
mysql -uroot -p'u)eUJxf9p*tw'
修改密碼
mysql> alter user root@localhost identified by 'password';
Query OK, 0 rows affected (0.05 sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected, 1 warning (0.02 sec)
#刷新權限
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> exit;
14.重啓mysql
service mysql restart
四 元數據+用戶+jdbc包
先登陸mysql
mysql -uroot -p'password'
1.創建元數據庫
create database cmf default character set utf8;
create database amon default character set utf8;
2.創建數據庫授權用戶
grant all privileges on cmf.* to 'cmf'@'%' identified by 'ruozedata';
grant all privileges on amon.* to 'amon'@'%' identified by 'ruozedata';
刷新權限
flush privileges;
3.準備jdbc包
自己下載個jdbc驅動包即可(上傳到hadoop001)
創建目錄(目錄不要隨便放置)
mkdir -p /usr/share/java
拷貝驅動包(移除版本號)
cp mysql-connector-java-5.1.47.jar /usr/share/java/mysql-connector-java.jar
五 CM部署
前面都屬於我們準備工作,下面開始CM部署
因爲CM是一個主從架構,我們在hadoop001安裝Server,在每臺機器安裝Agent
下載地址:https://archive.cloudera.com/cm5/repo-as-tarball/5.16.1/
wget https://archive.cloudera.com/cm5/repo-as-tarball/5.16.1/cm5.16.1-centos7.tar.gz
對tar包解壓
tar -zxvf cm5.16.1-centos7.tar.gz
查看rmp包
cd cm/5.16.1/RPMS/x86_64/
我們只需要用圖中框框部分的rpm包即可
cloudera-manager-daemons-5.16.1-1.cm5161.p0.1.el7.x86_64.rpm 是agent和server公用的包
所以安裝server時需要
cloudera-manager-daemons-5.16.1-1.cm5161.p0.1.el7.x86_64.rpm
cloudera-manager-server-5.16.1-1.cm5161.p0.1.el7.x86_64.rpm
安裝agent時需要
cloudera-manager-daemons-5.16.1-1.cm5161.p0.1.el7.x86_64.rpm
cloudera-manager-agent-5.16.1-1.cm5161.p0.1.el7.x86_64.rpm
5.1 安裝Server
1.先安裝daemons
rpm -ivh cloudera-manager-daemons-5.16.1-1.cm5161.p0.1.el7.x86_64.rpm --nodeps --force
2.然後安裝server
rpm -ivh cloudera-manager-server-5.16.1-1.cm5161.p0.1.el7.x86_64.rpm --nodeps --force
3.修改數據庫配置文件
進入配置文件目錄
cd /etc/cloudera-scm-server
修改配置文件
vi db.properties
按照自己的參數進行設置
4.啓動服務
service cloudera-scm-server start
啓動之後,查看日誌(要等1分鐘左右)
tail -F /var/log/cloudera-scm-server/cloudera-scm-server.log
看到7180端口,說明Server安裝成功
5.2 安裝Agent
Agent要在三臺機器都安裝,我們先把daemons和agent都拷貝到hadoop002和hadoop003機器
scp cloudera-manager-daemons-5.16.1-1.cm5161.p0.1.el7.x86_64.rpm hadoop002:/root
scp cloudera-manager-daemons-5.16.1-1.cm5161.p0.1.el7.x86_64.rpm hadoop003:/root
scp cloudera-manager-agent-5.16.1-1.cm5161.p0.1.el7.x86_64.rpm hadoop002:/root
scp cloudera-manager-agent-5.16.1-1.cm5161.p0.1.el7.x86_64.rpm hadoop003:/root
下面對三臺機器進行安裝
1.hadoop001安裝agent(hadoop001剛纔已經安裝過daemons了)
rpm -ivh cloudera-manager-agent-5.16.1-1.cm5161.p0.1.el7.x86_64.rpm --nodeps --force
2.hadoop002和hadoop003安裝agent
rpm -ivh cloudera-manager-daemons-5.16.1-1.cm5161.p0.1.el7.x86_64.rpm --nodeps --force
rpm -ivh cloudera-manager-agent-5.16.1-1.cm5161.p0.1.el7.x86_64.rpm --nodeps --force
3.三臺機器都編輯config.ini
vi /etc/cloudera-scm-agent/config.ini
都指向Server hadoop001
4.三臺機器啓動agent
service cloudera-scm-agent start
六 CDH下載parcel並搭建http服務
1.在hadoop001安裝httpd
yum install -y httpd
2.下載CDH5.16.1
https://archive.cloudera.com/cdh5/parcels/5.16.1/
命令如下
wget https://archive.cloudera.com/cdh5/parcels/5.16.1/CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel
wget https://archive.cloudera.com/cdh5/parcels/5.16.1/CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha1
wget https://archive.cloudera.com/cdh5/parcels/5.16.1/manifest.json
下載好之後的文件如下圖,
3.在/var/www/html下創建cdh5_parcel目錄
mkdir /var/www/html/cdh5_parcel
4.把下載好之後的文件移動到cdh5_parcel目錄(注意把.sha1改成.sha)
mv CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel /var/www/html/cdh5_parcel/
mv CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha1 /var/www/html/cdh5_parcel/CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parc
el.sha
mv manifest.json /var/www/html/cdh5_parcel/
5.啓動httpd
service httpd start
從下圖可以看出,我們本地的倉庫安裝好了
七訪問WebUI
地址爲server的ip:port,默認賬號:admin,密碼:admin
選擇免費
顯示大頁面
我們執行下命令(三臺機器都執行)
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
選擇Custom Services(上來不要一下子全安裝了,先安裝基本的,不然到時候出問題都不知道哪裏出問題)
到這裏安裝成功
八 CM界面的問題解決
8.1 解決cloudera manager
8.2 解決zookeeper問題
點擊All Hosts->hadoop002
下面圖提示,我們NTP服務沒有啓動,因爲我們時間是主從同步的,所以這裏直接點擊Suppress
到這裏都ok了,如下圖。