cdh hadoop 集羣搭建

CDH5 Hadoop集羣完全離線安裝說明

安裝準備工具:

1. 操作系統centos7

2. Jdk環境:jdk

3. Jdbc連接包:jdbc連接包mysql-connector-java-5.1.39-bin.jar

下載地址:http://dev.mysql.com/downloads/connector/j/

4. cdh 安裝相關包

(1)cloudera manager 下載地址:

http://archive.cloudera.com/cm5/cm/5/cloudera-manager-centos7-cm5.7.2_x86_64.tar.gz

2CDH-5.7.2-1.cdh5.7.2.p0.11-el7.parcel

3CDH-5.7.2-1.cdh5.7.2.p0.11-el7.parcel.sha1

4manifest.json

2~4)的文件下載路徑:http://archive.cloudera.com/cdh5/parcels/5.7.2/

5.linux系統的mysql數據庫

以上準備工具如圖所示:

安裝前準備工作介紹;

1. Linux版本 必須支持cloudera manager(其中python版本必須一直,否則後期出現問題特別難解決

2. Linux系統安裝之後卸載虛擬網卡:ifconfig

會提示網絡問題,提示網絡速度問題。如果linux系統自帶virbr0,需要卸載虛擬網絡。命令如何:yum -y remove libvirt*   然後 reboot重啓。

3

開始安裝:

1. 安裝jdk(每臺機器都要) ,首先卸載原有的openJDK:具體操作指令如下

卸載自帶jd k:]

殺進成

rm -f /var/run/yum.pid

[root@cdh1~]$ java -version

[root@cdh1~]$ rpm -qa | grep jdk

java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64

java-1.7.0-openjdk-headless-1.7.0.75-2.5.4.2.el7_0.x86_64

[root@cdh1~]# yum -y remove java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64

[root@cdh1~]# yum -y remove java-1.7.0-openjdk-headless-1.7.0.75-2.5.4.2.el7_0.x86_64

[root@cdh1~]# java -version

bash: /usr/bin/java: No such file or directory

安裝jdk:

方法一:使用rpm命令安裝:

[root@one-centos 下載] # rpm -ivh jdk-8u111-linux-x64.rpm

設置環境變量:
[root@one-centos 下載]# vim /etc/profile
在打開的profile文件中添加如下內容:
#set java environment
JAVA_HOME=/usr/java/jdk1.8.0_111
JRE_HOME=/usr/java/jdk1.8.0_111/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

修改生效

[root@one-centos 下載]# source /etc/profile

驗證JDK有效性:

[root@one-centos yt]# java -version

[root@one-centos yt]# java

[root@one-centos yt]# javac

[root@one-centos yt]# echo $JAVA_HOME

/usr/java/jdk1.8.0_111

方法二:用tar.gz包安裝JDK

/usr/目錄下創建java目錄:

[root@localhost ~]# mkdir/usr/java

[root@localhost ~]# cd /usr/java

下載JDK,然後解壓:

[root@localhost java]# curl -O http://download.oracle.com/otn-pub/java/jdk/8u111-b14/jdk-8u111-linux-x64.tar.gz

[root@localhost java]# tar -zxvf jdk-8u111-linux-x64.tar.gz

設置環境變量:(同上)

[root@one-centos 下載]# vim /etc/profile

在打開的profile文件中添加如下內容:

#set java environment

JAVA_HOME=/usr/java/jdk1.8.0_111

JRE_HOME=/usr/java/jdk1.8.0_111/jre

CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

export JAVA_HOME JRE_HOME CLASS_PATH PATH

讓修改生效:(同上)

[root@one-centos 下載]# source /etc/profile

驗證JDK有效性:(同上)

[root@one-centos yt]# java -version

[root@one-centos yt]# java

[root@one-centos yt]# javac

[root@one-centos yt]# echo $JAVA_HOME

/usr/java/jdk1.8.0_111

2. 修改每臺節點服務器的有關配置hostnameselinux關閉,防火牆關閉;hostname修改:分別對三臺都進行更改,並且注意每臺名稱和ip,每臺都要配上hosts。下面以一臺機器爲例:

Hostname:

[root@cdh1~]# vi /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=cdh1

 

[root@cdh1~]# vi /etc/hosts127.0.0.1 localhost.cdh1192.168.42.128  cdh1192.168.42.129  cdh2192.168.42.130  cdh3

Selinux: 機器重啓後生效;

[root@cdh1~]# vi /etc/sysconfig/selinux

SELINUX=disabled

[root@cdh1~]#sestatus -v

SELinux status: disabled

表示已經關閉了

防火牆:關閉防火牆

[root@cdh1~]# systemctl stop firewalld

[root@cdh1~]# systemctl disable firewalld

rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service'

rm '/etc/systemd/system/basic.target.wants/firewalld.service'

[root@cdh1~]# systemctl status firewalld

firewalld.service - firewalld - dynamic firewall daemon

   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled)

   Active: inactive (dead)

NTP服務器配置(用於3個節點間實現時間同步)

 

[root@cdh1~]#yum -y install ntp

更改master的節點

[root@cdh1~]## vi /etc/ntp.conf

註釋掉所有server *.*.*的指向,新添加一條可連接的ntp服務器(我選的本公司的ntp測試服務器)

server 172.30.0.19 iburst

在其他節點上把ntp指向master服務器地址即可(/etc/ntp.conf)

server 192.168.42.128 iburst

[root@cdh1~]## systemctl start ntpd  //啓動ntp服務

[root@cdh1~]## systemctl status ntpd //查看ntp服務狀態

 

SSH無密碼登錄配置,各個節點都需要設置免登錄密碼

下面以192.168.42.128192.168.42.129的免密登錄設置舉例

[root@cdh1 /]# ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):/root/.ssh/id_rsa already exists.

Overwrite (y/n)? y

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

1d:e9:b4:ed:1d:e5:c6:a7:f3:23:ac:02:2b:8c:fc:ca root@cdh1

The key's randomart image is:

+--[ RSA 2048]----+

|                 |

|           .     |

|          +     .|

|         + +   + |

|        S + . . =|

|       .   . . +.|

|  . o   o   o +  |

|  .o o . .   o + |

|   Eo..   ... . o|

+-----------------+

[root@cdh1 /]# ssh-copy-id 192.168.42.129

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

root@192.168.42.129's password:

Number of key(s) added: 1

 

Now try logging into the machine, with:   "ssh '192.168.42.129'"

and check to make sure that only the key(s) you wanted were added.

 

安裝mysql 
centos7自帶的是mariadb,需要先卸載掉

 

[root@cdh1 /]# rpm -qa | grep mariadb

mariadb-libs-5.5.41-2.el7_0.x86_64

[root@cdh1 /]# rpm -e --nodeps mariadb-libs-5.5.41-2.el7_0.x86_64

[root@cdh1 /]# tar -xvf  MySQL-5.6.24-1.linux_glibc2.5.x86_64.rpm-bundle.tar   //mysql rpm包拷貝到服務器上然後解壓

[root@cdh1 /]# rpm -ivh MySQL-*.rpm  //安裝釋出的全部rpm

[root@cdh1 /]# cp /usr/share/mysql/my-default.cnf /etc/my.cnf

[root@cdh1 /]# vi /etc/my.cnf    //在配置文件中增加以下配置並保存

[mysqld]

default-storage-engine = innodb

innodb_file_per_table

collation-server = utf8_general_ci

init-connect = 'SET NAMES utf8'

character-set-server = utf8

 

[root@cdh1 /]# yum install -y perl-Module-Install.noarch

[root@cdh1 /]# /usr/bin/mysql_install_db   //初始化mysql

[root@cdh1 /]# service mysql restart       //啓動mysql

 ERROR! MySQL server PID file could not be found!

Starting MySQL... SUCCESS!

[root@cdh1 /]#  cat /root/.mysql_secret    //查看mysql root初始化密碼

# The random password set for the root user at Fri Sep 22 11:13:25 2017 (local time): 9mp7uYFmgt6drdq3

[root@cdh1 /]#  mysql -u root -p          //登錄進行去更改密碼

mysql> SET PASSWORD=PASSWORD('123456');

mysql> update user set host='%' where user='root' and host='localhost';   //允許mysql遠程訪問

Query OK, 1 row affected (0.05 sec)

Rows matched: 1  Changed: 1  Warnings: 0

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

 

[root@cdh1 /]#  chkconfig mysql on   //配置開機啓動

 

[root@cdh1 /]# tar -zcvf mysql-connector-java-5.1.44.tar.gz // 解壓mysql-connector-java-5.1.44.tar.gz得到mysql-connector-java-5.1.44-bin.jar

[root@cdh1 /]#  mkdir /usr/share/java                          // 在各節點創建java文件夾

[root@cdh1 /]#  cp mysql-connector-java-5.1.44-bin.jar /usr/share/java/mysql-connector-java.jar       //mysql-connector-java-5.1.44-bin.jar拷貝到/usr/share/java路徑下並重命名爲mysql-connector-java.jar

創建數據庫

create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

Query OK, 1 row affected (0.00 sec)

create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

Query OK, 1 row affected (0.00 sec)

create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

Query OK, 1 row affected (0.00 sec)

 create database monitor DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

Query OK, 1 row affected (0.00 sec)

create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

Query OK, 1 row affected (0.00 sec)

grant all on *.* to root@"%" Identified by "123456";

安裝Cloudera-Manager

//解壓cm tar包到指定目錄所有服務器都要(或者在主節點解壓好,然後通過scp到各個節點同一目錄下)

[root@cdh1 ~]#mkdir /opt/cloudera-manager

[root@cdh1 ~]# tar -axvf cloudera-manager-centos7-cm5.7.2_x86_64.tar.gz -C /opt/cloudera-manager  

//創建cloudera-scm用戶(所有節點)

[root@cdh1 ~]# useradd --system --home=/opt/cloudera-manager/cm-5.7.2/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm  

//在主節點創建cloudera-manager-server的本地元數據保存目錄

[root@cdh1 ~]# mkdir /var/cloudera-scm-server

[root@cdh1 ~]# chown cloudera-scm:cloudera-scm /var/cloudera-scm-server

[root@cdh1 ~]# chown cloudera-scm:cloudera-scm /opt/cloudera-manager

//配置從節點cloudera-manger-agent指向主節點服務器

[root@cdh1 ~]# vi /opt/cloudera-manager/cm-5.7.2/etc/cloudera-scm-agent/config.ini

server_host改爲CMS所在的主機名即cdh1

//主節點中創建parcel-repo倉庫目錄

[root@cdh1 ~]# mkdir -p /opt/cloudera/parcel-repo

[root@cdh1 ~]# chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo

[root@cdh1 ~]# cp CDH-5.7.2-1.cdh5.7.2.p0.18-el7.parcel CDH-5.7.2-1.cdh5.7.2.p0.18-el7.parcel.sha manifest.json /opt/cloudera/parcel-repo

注意:其中CDH-5.7.2-1.cdh5.7.2.p0.18-el5.parcel.sha1 後綴要把1去掉

//所有節點創建parcels目錄

[root@cdh1 ~]# mkdir -p /opt/cloudera/parcels

[root@cdh1 ~]# chown cloudera-scm:cloudera-scm /opt/cloudera/parcels

解釋:Clouder-ManagerCDHs從主節點的/opt/cloudera/parcel-repo目錄中抽取出來,分發解壓激活到各個節點的/opt/cloudera/parcels目錄中

//初始腳本配置數據庫scm_prepare_database.sh(在主節點上)

[root@cdh1 ~]# /opt/cloudera-manager/cm-5.7.2/share/cmf/schema/scm_prepare_database.sh mysql -hcdh1 -uroot -p123456 --scm-host cdh1 scmdbn scmdbu scmdbp

說明:這個腳本就是用來創建和配置CMS需要的數據庫的腳本。各參數是指:

mysql:數據庫用的是mysql,如果安裝過程中用的oracle,那麼該參數就應該改爲oracle

-cdh1:數據庫建立在cdh1主機上面,也就是主節點上面。

-urootroot身份運行mysql-123456mysqlroot密碼是***

--scm-host cdh1CMS的主機,一般是和mysql安裝的主機是在同一個主機上,最後三個參數是:數據庫名,數據庫用戶名,數據庫密碼。

 

如果報錯:

ERROR com.cloudera.enterprise.dbutil.DbProvisioner  - Exception when creating/dropping database with user 'root' and jdbc url 'jdbc:mysql://localhost/?useUnicode=true&characterEncoding=UTF-8'

java.sql.SQLException: Access denied for user 'root'@'cdh1' (using password: YES)

則參考 http://forum.spring.io/forum/spring-projects/web/57254-java-sql-sqlexception-access-denied-for-user-root-localhost-using-password-yes

運行如下命令:

update user set PASSWORD=PASSWORD('123456') where user='root';

GRANT ALL PRIVILEGES ON *.* TO 'root'@'cdh1' IDENTIFIED BY '123456' WITH GRANT OPTION;

FLUSH PRIVILEGES;

//啓動主節點

[root@cdh1 ~]# cp /opt/cloudera-manager/cm-5.7.2/etc/init.d/cloudera-scm-server /etc/init.d/cloudera-scm-server

[root@cdh1 ~]# chkconfig cloudera-scm-server on

[root@cdh1 ~]# vi /etc/init.d/cloudera-scm-server

CMF_DEFAULTS=${CMF_DEFAULTS:-/etc/default}改爲=/opt/cloudera-manager/cm-5.7.2/etc/default

[root@cdh1 ~]# service cloudera-scm-server start

//同時爲了保證在每次服務器重啓的時候都能啓動cloudera-scm-server,應該在開機啓動腳本/etc/rc.local中加入命令:service cloudera-scm-server restart

//啓動cloudera-scm-agent所有節點

[root@cdhX ~]# mkdir /opt/cloudera-manager/cm-5.7.2/run/cloudera-scm-agent

[root@cdhX ~]# cp /opt/cloudera-manager/cm-5.7.2/etc/init.d/cloudera-scm-agent /etc/init.d/cloudera-scm-agent

[root@cdhX ~]# chkconfig cloudera-scm-agent on

[root@cdhX ~]# vi /etc/init.d/cloudera-scm-agent

CMF_DEFAULTS=${CMF_DEFAULTS:-/etc/default}改爲=/opt/cloudera-manager/cm-5.7.2/etc/default

[root@cdhX ~]# service cloudera-scm-agent start

//同時爲了保證在每次服務器重啓的時候都能啓動cloudera-scm-agent,應該在開機啓動腳本/etc/rc.local中加入命令:service cloudera-scm-agent restart

問題解決

 

參考:https://www.cnblogs.com/zhangleisanshi/p/7575579.html

副本塊不足問題參考:http://blog.csdn.net/kissmelove01/article/details/44680255

2CDH環境檢測2處警告修復

2.1、檢查主機正確性時出現 “Clouder% 建議將 /proc/sys/vm/sw%ppiness

置爲 0。當前設置爲 30。” 的警告,進⾏行行如下設定

# vi /etc/sysctl.conf

vm.sw%ppiness = 0

# sysctl p

2.2、檢查主機正確性時出現 “已啓⽤用“透明⼤大⻚頁⾯面”,它可能會導致重⼤大的性能

問題。” 的警告,進⾏行行如下設定

echo never > /sys/kernel/mm/tr%nsp%rent_hugep%ge/en%bled

echo never > /sys/kernel/mm/tr%nsp%rent_hugep%ge/defr%g

# vi /etc/rc.loc%l

echo never > /sys/kernel/mm/tr%nsp%rent_hugep%ge/en%bled

echo never > /sys/kernel/mm/tr%nsp%rent_hugep%ge/defr%g

3.網絡問題,提示網絡速度問題。如果linux系統自帶virbr0,需要卸載虛擬網絡。命令如何:yum -y remove libvirt*   然後 reboot重啓。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章