天天看點

CentOS 7下CDH搭建Hadoop叢集

一、說明 

節點(CentOS7.5) Server  || Agent CPU
node11 Server  || Agent 4G
node12 Agent 2G
node13 Agent 2G

二、系統環境搭建

1、網絡配置(所有節點)

1.設定主機名和IP

2.配置/etc/hosts  IP和主機名的映射 

2、SSH免密碼登入

1.産生公鑰和私鑰:ssh-keygen -t rsa (一直回車直即可)

2.将公鑰分發給所有節點(包括本機):  ssh-copy-id -i 主機名

3.測試ssh通路:    ssh root@主機名

3、關閉防火牆

1.關閉防火牆:systemctl stop firewalld

2.防止開機自啟:systemctl disable firewalld

3.檢視狀态:firewall-cmd --state

4、關閉SELINUX

1.編輯  vi /etc/selinux/config

2.将SELINUX設定為:SELINUX=disabled

[root@node11~]# sestatus -v

SELinux status: disabled 表示已經關閉了

5、安裝JDK

1.檢視安裝的Java資訊:

rpm -qa | grep java

2.解除安裝自帶open jdk

rpm -e --nodeps 包名

3.建立/usr/java目錄,并上傳包到此目錄下,然後将rpm包解壓到此目錄下

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

4.配置環境變量

vi /etc/profile

export JAVA_HOME=/usr/java/jdk1.8.0_191

export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/sbin

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

5.使配置後的環境變量生效

source /etc/profile

6.檢視是否安裝成功

java -version

6、設定NTP

[root@node11~]#yum -y install ntp 更改master的節點

[root@node11~]## vi /etc/ntp.conf 注釋掉所有server *.*.*的指向,新添加一條可連接配接的ntp伺服器(我選的本公司的ntp測試伺服器)

server 172.30.0.19 iburst 在其他節點上把ntp指向master伺服器位址即可(/etc/ntp.conf下) server node11 iburst

[root@node11~]## systemctl start ntpd //啟動ntp服務

[root@node11~]## systemctl status ntpd //檢視ntp服務狀态

7、安裝配置MySQL

(主節點安裝即可--這裡将node11作為主節點)

1.解除安裝mariadb

rpm -qa|grep mariadb

rpm -e --nodeps mariadb的包名

CentOS 7下CDH搭建Hadoop叢集

2.上傳MySQL包到自建目錄:/opt/software

CentOS 7下CDH搭建Hadoop叢集

3.安裝MySQL

# groupadd mysql
# useradd -r -g mysql -s /sbin/nologin mysql
#cd /usr/local/
# tar zxvf /root/mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
# ln -s mysql-5.7.21-linux-glibc2.12-x86_64/ mysql
#cd mysql
# mkdir mysql-files
# chown -R mysql.mysql .
# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
# cp -rf /etc/my.cnf /etc/my.cnf.old
# vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

skip-grant-tables             

複制

啟動mysql

# bin/mysqld_safe --user=mysql &           

複制

# cp support-files/mysql.server /etc/init.d/mysql
# chmod a+x /etc/init.d/mysql
# chkconfig --add mysql
# chkconfig mysql on
# service mysql start           

複制

設定root的密碼

mysql> use mysql;
mysql> update user set authentication_string=PASSWORD('123456') where User='root';
mysql> alter user root@'localhost' identified by '123456';  //修改密碼           

複制

重新初始化

# killall mysqld
# rm -rf /usr/local/mysql/data/
# chown -R mysql.mysql /usr/local/mysql
# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
# bin/mysql_ssl_rsa_setup
# service mysqld restart           

複制

授權root使用者使用密碼從任意主機連接配接到mysql伺服器

GRANT ALL PRIVILEGES ON *.* TO 'ROOT'@'%' IDENTIFIED BY '1234' WITH GRANT OPTION;

flush privileges; 

三、Cloudera Manager Server&Agent安裝 

CM安裝包下載下傳位址:   https://archive.cloudera.com/cm5/cm/5/

CDH安裝包下載下傳位址:  http://archive.cloudera.com/cdh5/parcels/5.15.0/

CentOS 7下CDH搭建Hadoop叢集

1、安裝Cloudera Manager Server&Agent

上傳到/home/tools下 (三台機器都要安裝)    tar xvzf cloudera-manager-centos7-cm5.15.0_x86_64.tar.gz  -C /opt

CentOS 7下CDH搭建Hadoop叢集

2、配置CM Agent

1.cm的安裝包的server和agent都是同一個包,啟動的時候啟動指令指定為server還是agent;

2.cm有一個工作目錄,需要我們來建立;建立一個使用者;修改agent的配置,給它指定server的位置;那個端口7182是server和agent通信的端口;

3.server_host配置為server的名字;

vi   /opt/cm-5.15.0/etc/cloudera-scm-agent/config.ini   中 server_host(三台機器)

CentOS 7下CDH搭建Hadoop叢集

3、建立使用者cloudera-scm(所有節點)

useradd --system --home=/opt/cm-5.15.0/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm

4、建立Parcel目錄

建立parcel目錄,這個目錄是server和agent用來接收和發送資料的目錄,server端的parcel-repo這個目錄會把所有的安裝檔案全部下載下傳到此目錄,而agent也需要安裝包,parcels就是用來存儲指定的安裝包的,當然需要有權限能操作這些目錄;

Server節點

  mkdir -p /opt/cloudera/parcel-repo

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

Agent節點

 mkdir -p /opt/cloudera/parcels

 chown cloudera-scm:cloudera-scm /opt/cloudera/parcels

把CDH安裝包移到cloudera/parcel-repo下面,并修改其中字尾為sha1的檔案為sha,如下

CentOS 7下CDH搭建Hadoop叢集

5、配置CM Server的資料庫

cp mysql-connector-java.jar /opt/cm-5.15.0/share/cmf/lib/                 注意jar包名稱要修改為mysql-connector-java.jar

mysql -u root -p123456
use mysql;
grant all on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;­
初始化cm資料庫:   cd /opt/cm-5.15.0/share/cmf/schema/
 ./scm_prepare_database.sh mysql cm -h node11 -uroot -p123456 --scm-host node11 scm scm scm  
格式:資料庫類型、資料庫、資料庫伺服器、使用者名、密碼、cm server伺服器            

複制

建立其他元件需要的資料庫

create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

6、啟動CM Manager&Agent服務

先確定啟動了mysql  service mysqld start

node11:執行    /opt/cm-5.15.0/etc/init.d/cloudera-scm-server start

node11,12,13:   執行  /opt/cm-5.15.0/etc/init.d/cloudera-scm-agent start 

service服務啟動需要幾分鐘,取決于伺服器的性能,此時我們可以使用

netstat -apn|grep 7180           

複制

CentOS 7下CDH搭建Hadoop叢集

查詢端口被占用後,就可以用浏覽器打開http://node11:7180/進行通路了,登入使用者名與密碼分别為admin。

7、Server&Agent開機自啟動服務

将/opt/cm-5.15.0/etc/init.d/目錄下的cloudera-scm-server伺服器啟動腳本和cloudera-scm-agent代理服務啟動腳本複制到/etc/init.d/目錄下面。(/etc/init.d/目錄用于存放開機啟動腳本的目錄)

//配置server主節點node11
[root@node11 ~]# cp /opt/cm-5.15.0/etc/init.d/cloudera-scm-server /etc/init.d/cloudera-scm-server
[root@node11 ~]# chkconfig --add cloudera-scm-server
[root@node11 ~]# chkconfig cloudera-scm-server on 
[root@node11 ~]# vi /etc/init.d/cloudera-scm-server 
CMF_DEFAULTS=${CMF_DEFAULTS:-/etc/default} 修改為 CMF_DEFAULTS=${CMF_DEFAULTS:-/opt/cm-5.15.0/etc/default}  #你的cloudera manager安裝目錄,然後儲存退出即可。
添加:export JAVA_HOME=/usr/local/java/jdk1.8           #你的java安裝目錄
[root@node11 ~]# chkconfig --list cloudera-scm-server  //然後檢視狀态,如果2-5顯示開啟表示配置成功。
[root@node11 ~]# service cloudera-scm-server start & systemctl start cloudera-scm-server.service

//配置agent所有節點,node11,node12,node13
[root@node11 ~]# cp /opt/cm-5.15.0/etc/init.d/cloudera-scm-agent /etc/init.d/cloudera-scm-agent
[root@node11 ~]# chkconfig --add cloudera-scm-agent
[root@node11 ~]# chkconfig cloudera-scm-agent on 
[root@node11 ~]# vi /etc/init.d/cloudera-scm-agent
CMF_DEFAULTS=${CMF_DEFAULTS:-/etc/default} 修改為 CMF_DEFAULTS=${CMF_DEFAULTS:-/opt/cm-5.15.0/etc/default} 
添加:export JAVA_HOME=/usr/local/java/jdk1.8         #你的java安裝目錄 
[root@node11 ~]# service cloudera-scm-agent start & systemctl start cloudera-scm-agent.service           

複制

四、CDH5安裝 

CentOS 7下CDH搭建Hadoop叢集

下一步,選擇免費版本

CentOS 7下CDH搭建Hadoop叢集

繼續,下一步,直到如下界面,可以在目前管理的主機清單中看到對應的節點。選擇要安裝的節點,這裡我選擇全部節點,繼續。

CentOS 7下CDH搭建Hadoop叢集

選擇自己下載下傳的CDH版本,點選繼續

CentOS 7下CDH搭建Hadoop叢集

接下來是安裝Parcel,伺服器檢查,

CentOS 7下CDH搭建Hadoop叢集

更改交換空間: 

echo 10 > /proc/sys/vm/swappiness

如下禁用此設定,然後将同一指令添加到 /etc/rc.local 等初始化腳本中,以便在系統重新開機時予以設定。以下主機将受到影響: 

echo never > /sys/kernel/mm/transparent_hugepage/defrag

echo never > /sys/kernel/mm/transparent_hugepage/enabled

CentOS 7下CDH搭建Hadoop叢集

重新運作檢測,

CentOS 7下CDH搭建Hadoop叢集

全部完成,點選完成,這裡選擇自定義安裝

CentOS 7下CDH搭建Hadoop叢集

服務配置,一般情況下保持預設就可以了,也可以自己手動根據節點情況進行配置設定,點選繼續

CentOS 7下CDH搭建Hadoop叢集

測試如下資料庫連接配接

CentOS 7下CDH搭建Hadoop叢集

這裡啟動hive報錯找不到mysql連接配接驅動包,靠備一份  mysql-connector-java.jar   到    /opt/cloudera/parcels/CDH-5.15.0-1.cdh5.15.0.p0.21/lib/hive/lib/下面

CentOS 7下CDH搭建Hadoop叢集

點選繼續,預設叢集設定,直到安裝成功. 

CentOS 7下CDH搭建Hadoop叢集