天天看點

Hadoop項目之Cloudera 5.6.0.1(CDH)的安裝部署

1 前言

Cloudera是基于Apache原生的Hadoop元件進行重新封裝和加強,Cloudera可以簡化Hadoop元件的部署。

更新版本的配置請參閱(CentOS 7):

<a href="http://cmdschool.blog.51cto.com/2420395/1916322" target="_blank">http://cmdschool.blog.51cto.com/2420395/1916322</a>

2 理論基礎

2.1 部署軟體架構

1)Oracle JDK

2)Cloudera Manager Server and Agent packages

3)Supporting database software

4)CDH and managed service software

2.2 部署步驟和安裝方法

2.2.1 安裝方法

A)Cloudera Manager安裝程式安裝(容易)

B)yum源方式安裝(中等)

C)源代碼安裝(難)

注:本教程使用方法B

2.2.2 部署步驟

1)安裝JDK

2)安裝并配置資料庫

3)安裝Cloudera管理服務端

4)安裝Cloudera管理代理端

5)安裝CDH管理服務軟體

6)建立、啟動和配置CDH并管理服務

2.3 Cloudera Manager端的相關檔案

1

<code>rpm -ql cloudera-manager-server</code>

顯示如下:

2

3

4

5

6

7

8

9

10

<code>/etc/cloudera-scm-server</code>

<code>/etc/cloudera-scm-server/db</code><code>.properties</code>

<code>/etc/cloudera-scm-server/log4j</code><code>.properties</code>

<code>/etc/default/cloudera-scm-server</code>

<code>/etc/rc</code><code>.d</code><code>/init</code><code>.d</code><code>/cloudera-scm-server</code>

<code>/opt/cloudera/csd</code>

<code>/opt/cloudera/parcel-repo</code>

<code>/usr/sbin/cmf-server</code>

<code>/var/log/cloudera-scm-server</code>

<code>/var/run/cloudera-scm-server</code>

檔案與目錄功能如下:

1)其中/etc/的2-4行為Cloudera Manager服務端配置檔案

2)/opt/cloudera/parcel-repo為下載下傳安裝包存放目錄

3 實踐部分

3.1 環境資訊

3.1.1 系統資訊

OS = CentOS 6.6 x86_64

注:系統請使用最小化安裝,否則可能Sqoop服務可能無法啟動

3.1.2 主機資訊

Cloudera Manager:

ip address=10.168.0.120

hostname=cdm-m.cmdschool.org

Cloudera Host1:

ip address=10.168.0.121

hostname=cdm-h1.cmdschool.org

Cloudera Host2:

ip address=10.168.0.122

hostname=cdm-h2.cmdschool.org

Cloudera Host3:

ip address=10.168.0.123

hostname=cdm-h3.cmdschool.org

Cloudera Host4:

ip address=10.168.0.124

hostname=cdm-h4.cmdschool.org

3.2 運作環境配置

In Cloudera Manager &amp; Cloudera Host[1-4]

3.2.1 關閉selinux

<code>getenforce</code>

如果顯示如下:

<code>Enforcing</code>

則執行:

<code>setenforce 0</code>

<code>sed</code> <code>-i </code><code>'s/SELINUX=enforcing/SELINUX=disabled/g'</code> <code>/etc/selinux/config</code>

3.2.2 配置hosts

vim編輯/etc/hosts

<code>10.168.0.120 cdm-m.cmdschool.org</code>

<code>10.168.0.121 cdm-h1.cmdschool.org</code>

<code>10.168.0.122 cdm-h2.cmdschool.org</code>

<code>10.168.0.123 cdm-h3.cmdschool.org</code>

<code>10.168.0.124 cdm-h4.cmdschool.org</code>

3.2.3 檢查主機名稱

<code>hostname</code>

注:主機名稱與上面不一緻會影響服務的啟動

3.2.4 配置sudo(單使用者模式适用,可選)

<code>visudo</code>

增加如下組

<code>%cloudera-scm ALL=(ALL) NOPASSWD: ALL</code>

确認包含如下行:

<code>Defaults secure_path = </code><code>/sbin</code><code>:</code><code>/bin</code><code>:</code><code>/usr/sbin</code><code>:</code><code>/usr/bin</code>

vim編輯/etc/pam.d/su,確定包含如下行

<code>session         required        pam_limits.so</code>

3.2.5 關閉防火牆并設定開機不啟動

<code>/etc/init</code><code>.d</code><code>/iptables</code> <code>stop</code>

<code>chkconfig iptables off</code>

3.2.6 優化虛拟記憶體需求率

1)檢查虛拟記憶體需求率

<code>cat</code> <code>/proc/sys/vm/swappiness</code>

2)臨時降低虛拟記憶體需求率

<code>sysctl vm.swappiness=0</code>

3)永久降低虛拟記憶體需求率

vim編輯/etc/sysctl.conf

<code>kernel.shmall = 4294967296</code>

<code>vm.swappiness = 0</code>

并運作如下指令使生效

<code>sysctl -p</code>

3.2.7 解決透明大頁面問題

1)檢查透明大頁面問題

<code>cat</code> <code>/sys/kernel/mm/transparent_hugepage/defrag</code>

如果顯示為:

<code>[always] madvise never</code>

2)臨時關閉透明大頁面問題

<code>echo</code> <code>never &gt; </code><code>/sys/kernel/mm/transparent_hugepage/defrag</code>

确認配置生效:

應該顯示為:

<code>always madvise [never]</code>

3)配置開機自動生效

vim編輯/etc/rc.local,加入如下内容

3.3 yum源的安裝配置

3.3.1 公共yum源配置

1)配置yum源

下載下傳預設yum源

<code>wget -P </code><code>/etc/yum</code><code>.repos.d/ https:</code><code>//archive</code><code>.cloudera.com</code><code>/cm5/redhat/6/x86_64/cm/cloudera-manager</code><code>.repo</code>

修改為指定版本yum源

vim編輯/etc/yum.repos.d/cloudera-manager.repo修改如下參數:

<code>baseurl=https:</code><code>//archive</code><code>.cloudera.com</code><code>/cm5/redhat/6/x86_64/cm/5</code><code>.6.0/</code>

2)安裝配置工具

<code>yum </code><code>install</code> <code>-y vim wget openssh-clients</code>

3)安裝jdk

<code>yum </code><code>install</code> <code>-y oracle-j2sdk1.7</code>

4)安裝python

<code>yum </code><code>install</code> <code>-y python</code>

5)安裝ntpd

<code>yum </code><code>install</code> <code>-y ntp</code>

3.3.2 Cloudera Manager端yum源配置

In Cloudera Manager

1)安裝Cloudera Manager包

<code>yum </code><code>install</code> <code>-y cloudera-manager-daemons cloudera-manager-server</code>

2)安裝mysql

<code>yum </code><code>install</code> <code>-y mysql-server mysql-devel mysql</code>

3.3.3 Cloudera Manager Agent端yum源配置

In Cloudera Host[1-4]

安裝Cloudera Manager Agent包

<code>yum </code><code>install</code> <code>-y cloudera-manager-agent cloudera-manager-daemons</code>

3.4 依賴于yum源的環境配置

3.4.1 配置jdk變量環境

1)vim編輯/etc/profile,末尾加入如下内容

<code>export</code> <code>JAVA_HOME=</code><code>/usr/java/jdk1</code><code>.7.0_67-cloudera</code>

<code>export</code> <code>JRE_HOME=${JAVA_HOME}</code><code>/jre</code>

<code>export</code> <code>CLASSPATH=.:${JAVA_HOME}</code><code>/lib</code><code>:${JRE_HOME}</code><code>/lib</code>

<code>export</code> <code>PATH=${JAVA_HOME}</code><code>/bin</code><code>:$PATH</code>

2)導入java環境變量

<code>source</code> <code>/etc/profile</code>

3)測試jdk的配置

<code>java -version</code>

3.4.2 權限檢查(單使用者模式适用,可選)

檢查以下目錄cloudera-scm使用者具有完全的權限

檢查目前目錄權限:

<code>ls</code> <code>-ld </code><code>/opt/cloudera/</code>

顯示如下

<code>drwxr-xr-x. 4 cloudera-scm cloudera-scm 4096 May 23 13:51 </code><code>/opt/cloudera/</code>

檢查子目錄權限:

<code>ls</code> <code>-lR </code><code>/opt/cloudera/</code>

<code>/opt/cloudera/</code><code>:</code>

<code>total 8</code>

<code>drwxr-xr-x. 2 cloudera-scm cloudera-scm 4096 Feb 12 11:28 csd</code>

<code>drwxr-xr-x. 2 cloudera-scm cloudera-scm 4096 Feb 12 11:28 parcel-repo</code>

<code>/opt/cloudera/csd</code><code>:</code>

<code>total 0</code>

<code>/opt/cloudera/parcel-repo</code><code>:</code>

同樣,檢查伺服器或用戶端目錄權限

<code>ls</code> <code>-ld </code><code>/var/log/cloudera-scm-server/</code>

<code>ls</code> <code>-lR </code><code>/var/log/cloudera-scm-server/</code>

<code>ls</code> <code>-ld </code><code>/var/lib/cloudera-scm-agent/</code>

<code>ls</code> <code>-lR </code><code>/var/lib/cloudera-scm-agent/</code>

3.4.3 檢查線程限制配置

<code>cat</code> <code>/etc/security/limits</code><code>.d</code><code>/cloudera-scm</code><code>.conf</code>

<code>#</code>

<code># (c) Copyright 2014 Cloudera, Inc.</code>

<code>cloudera-scm    soft  nofile  32768</code>

<code>cloudera-scm    soft  nproc   65536</code>

<code>cloudera-scm    hard  nofile  1048576</code>

<code>cloudera-scm    hard  nproc   unlimited</code>

<code>cloudera-scm    hard  memlock unlimited</code>

3.4.4 Cloudera Manager端配置

1)臨時校對時間

<code>ntpdate 0.centos.pool.ntp.org</code>

2)啟動并配置ntpd服務自動啟動

<code>/etc/init</code><code>.d</code><code>/ntpd</code> <code>start</code>

<code>chkconfig ntpd on</code>

3.4.5 Cloudera Manager Agen端配置

<code>ntpdate 10.168.0.120</code>

2)vim編輯/etc/ntp.conf

注釋掉外網時間伺服器并增加内網時間伺服器位址

<code>#server 0.centos.pool.ntp.org iburst</code>

<code>#server 1.centos.pool.ntp.org iburst</code>

<code>#server 2.centos.pool.ntp.org iburst</code>

<code>#server 3.centos.pool.ntp.org iburst</code>

<code>server 10.168.0.120 iburst</code>

3)啟動并配置ntpd服務自動啟動

3.4.7 安裝MySQL JDBC Driver

<code>wget http:</code><code>//dev</code><code>.mysql.com</code><code>/get/Downloads/Connector-J/mysql-connector-java-5</code><code>.1.39.</code><code>tar</code><code>.gz</code>

<code>tar</code> <code>zxvf mysql-connector-java-5.1.39.</code><code>tar</code><code>.gz</code>

<code>mkdir</code> <code>/usr/share/java/</code>

<code>cp</code> <code>mysql-connector-java-5.1.39</code><code>/mysql-connector-java-5</code><code>.1.39-bin.jar </code><code>/usr/share/java/mysql-connector-java</code><code>.jar</code>

3.4.8 配置公鑰認證

In Cloudera Manager:

<code> </code><code>ssh</code><code>-keygen -t rsa</code>

注:以上一路回車

In Cloudera Manager Agen:

<code>ssh</code><code>-copy-</code><code>id</code> <code>-i ~/.</code><code>ssh</code><code>/id_rsa</code><code>.pub [email protected]</code>

<code>ssh</code><code>-copy-</code><code>id</code> <code>-i ~/.</code><code>ssh</code><code>/id_rsa</code><code>.pub [email protected]</code>

<code>ssh</code><code>-copy-</code><code>id</code> <code>-i ~/.</code><code>ssh</code><code>/id_rsa</code><code>.pub [email protected]</code>

<code>ssh</code><code>-copy-</code><code>id</code> <code>-i ~/.</code><code>ssh</code><code>/id_rsa</code><code>.pub [email protected]</code>

<code>ssh</code><code>-copy-</code><code>id</code> <code>-i ~/.</code><code>ssh</code><code>/id_rsa</code><code>.pub [email protected]</code>

In Cloudera Manager:

<code>ssh</code> <code>10.168.0.120</code>

<code>ssh</code> <code>10.168.0.121</code>

<code>ssh</code> <code>10.168.0.122</code>

<code>ssh</code> <code>10.168.0.123</code>

<code>ssh</code> <code>10.168.0.124</code>

注:以上如果無需密碼登記即成功

3.5 Cloudera Manager安裝配置

3.5.1 修改mysql參數

1)關閉資料庫

<code>/etc/init</code><code>.d</code><code>/mysqld</code> <code>stop</code>

2)備份ib_logfile檔案

<code>mkdir</code> <code>/var/lib/backup</code>

<code>cd</code> <code>/var/lib/mysql/</code>

<code>mv</code> <code>ib_logfile* </code><code>/var/lib/backup/</code>

3)vim編輯/etc/my.cnf

加入如下參數

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

<code>[mysqld]</code>

<code>transaction-isolation = READ-COMMITTED</code>

<code># Disabling symbolic-links is recommended to prevent assorted security risks;</code>

<code># to do so, uncomment this line:</code>

<code># symbolic-links = 0</code>

<code>key_buffer = 16M</code>

<code>key_buffer_size = 32M</code>

<code>max_allowed_packet = 32M</code>

<code>thread_stack = 256K</code>

<code>thread_cache_size = 64</code>

<code>query_cache_limit = 8M</code>

<code>query_cache_size = 64M</code>

<code>query_cache_type = 1</code>

<code>max_connections = 550</code>

<code>#expire_logs_days = 10</code>

<code>#max_binlog_size = 100M</code>

<code>#log_bin should be on a disk with enough free space. Replace '/var/lib/mysql/mysql_binary_log' with an appropriate path for your system</code>

<code>#and chown the specified folder to the mysql user.</code>

<code>log_bin=</code><code>/var/lib/mysql/mysql_binary_log</code>

<code># For MySQL version 5.1.8 or later. Comment out binlog_format for older versions.</code>

<code>binlog_format = mixed</code>

<code>read_buffer_size = 2M</code>

<code>read_rnd_buffer_size = 16M</code>

<code>sort_buffer_size = 8M</code>

<code>join_buffer_size = 8M</code>

<code># InnoDB settings</code>

<code>innodb_file_per_table = 1</code>

<code>innodb_flush_log_at_trx_commit  = 2</code>

<code>innodb_log_buffer_size = 64M</code>

<code>innodb_buffer_pool_size = 4G</code>

<code>innodb_thread_concurrency = 8</code>

<code>innodb_flush_method = O_DIRECT</code>

<code>innodb_log_file_size = 512M</code>

<code>[mysqld_safe]</code>

<code>log-error=</code><code>/var/log/mysqld</code><code>.log</code>

<code>pid-</code><code>file</code><code>=</code><code>/var/run/mysqld/mysqld</code><code>.pid</code>

<code>sql_mode=STRICT_ALL_TABLES</code>

3.5.2 啟動并設定開機自動啟動

<code>/etc/init</code><code>.d</code><code>/mysqld</code> <code>start</code>

<code>chkconfig mysqld on</code>

3.5.3 初始化資料庫

<code>mysql_secure_installation</code>

向導如下:

<code>[...]</code>

<code>Enter current password </code><code>for</code> <code>root (enter </code><code>for</code> <code>none):</code>

<code>OK, successfully used password, moving on...</code>

<code>Set root password? [Y</code><code>/n</code><code>] y</code>

<code>New password:</code>

<code>Re-enter new password:</code>

<code>Remove anonymous </code><code>users</code><code>? [Y</code><code>/n</code><code>] y</code>

<code>Disallow root login remotely? [Y</code><code>/n</code><code>] n</code>

<code>Remove </code><code>test</code> <code>database and access to it [Y</code><code>/n</code><code>] y</code>

<code>Reload privilege tables now? [Y</code><code>/n</code><code>] y</code>

<code>All </code><code>done</code><code>!</code>

3.5.4 準備scm庫

1)方法一

資料庫配置:

<code>mysql -uroot -p</code>

<code>create database scm default character </code><code>set</code> <code>utf8;</code>

<code>grant all privileges on *.* to scm@</code><code>'cdm-m.cmdschool.org'</code> <code>identified by </code><code>'scm'</code><code>;</code>

<code>flush privileges;</code>

vim編輯/etc/cloudera-scm-server/db.properties修改如下參數:

<code>com.cloudera.cmf.db.</code><code>type</code><code>=mysql</code>

<code>com.cloudera.cmf.db.host=cdm-m.cmdschool.org</code>

<code>com.cloudera.cmf.db.name=scm</code>

<code>com.cloudera.cmf.db.user=scm</code>

<code>com.cloudera.cmf.db.password=scm</code>

2)方法二(官方建議)

授權temp權限:

<code>grant all privileges on *.* to </code><code>'temp'</code><code>@</code><code>'%'</code> <code>identified by </code><code>'temp'</code> <code>with grant option;</code>

生成配置檔案:

<code>/usr/share/cmf/schema/scm_prepare_database</code><code>.sh mysql -h cdm-m.cmdschool.org -utemp -ptemp --scm-host cdm-m.cmdschool.org scm scm scm</code>

<code>JAVA_HOME=</code><code>/usr/java/jdk1</code><code>.7.0_67-cloudera</code>

<code>Verifying that we can write to </code><code>/etc/cloudera-scm-server</code>

<code>Creating SCM configuration </code><code>file</code> <code>in</code> <code>/etc/cloudera-scm-server</code>

<code>Executing: </code><code>/usr/java/jdk1</code><code>.7.0_67-cloudera</code><code>/bin/java</code> <code>-</code><code>cp</code> <code>/usr/share/java/mysql-connector-java</code><code>.jar:</code><code>/usr/share/java/oracle-connector-java</code><code>.jar:</code><code>/usr/share/cmf/schema/</code><code>..</code><code>/lib/</code><code>* com.cloudera.enterprise.dbutil.DbCommandExecutor </code><code>/etc/cloudera-scm-server/db</code><code>.properties com.cloudera.cmf.db.</code>

<code>[main] DbCommandExecutor INFO Successfully connected to database.</code>

<code>All </code><code>done</code><code>, your SCM database is configured correctly!</code>

确認生成的結果:

<code>cat</code> <code>/etc/cloudera-scm-server/db</code><code>.properties</code>

<code># Auto-generated by scm_prepare_database.sh on Tue May 24 19:08:19 CST 2016</code>

<code># For information describing how to configure the Cloudera Manager Server</code>

<code># to connect to databases, see the "Cloudera Manager Installation Guide."</code>

确認庫通路權限:

<code>show grants </code><code>for</code> <code>scm@</code><code>'cdm-m.cmdschool.org'</code><code>;</code>

<code>+----------------------------------------------------------------------------------------------------------------------+</code>

<code>| Grants </code><code>for</code> <code>[email protected]                                                                                   |</code>

<code>| GRANT USAGE ON *.* TO </code><code>'scm'</code><code>@</code><code>'cdm-m.cmdschool.org'</code> <code>IDENTIFIED BY PASSWORD </code><code>'*45E6E3C68BDF1AC7EBB5C5A3BCBD5E9437B293BE'</code> <code>|</code>

<code>| GRANT ALL PRIVILEGES ON `scm`.* TO </code><code>'scm'</code><code>@</code><code>'cdm-m.cmdschool.org'</code>                                                       <code>|</code>

<code>2 rows </code><code>in</code> <code>set</code> <code>(0.00 sec)</code>

清理資料庫使用者授權:

<code>drop user </code><code>'temp'</code><code>@</code><code>'%'</code><code>;</code>

3.5.5 建立附加資料庫(可選)

1)附加資料庫清單

Role

Database

User

Password

Activity Monitor

amon

amon_password

Reports Manager

rman

rman_password

Hive Metastore Server

metastore

hive

hive_password

Sentry Server

sentry

sentry_password

Cloudera Navigator Audit Server

nav

nav_password

Cloudera Navigator Metadata Server

navms

navms_password

2)建立資料庫并配置管理賬号密碼

<code>create database amon default character </code><code>set</code> <code>utf8;</code>

<code>grant all privileges on amon.* to </code><code>'amon'</code><code>@</code><code>'%'</code> <code>identified by </code><code>'amon_password'</code><code>;</code>

<code>create database rman default character </code><code>set</code> <code>utf8;</code>

<code>grant all privileges on rman.* to </code><code>'rman'</code><code>@</code><code>'%'</code> <code>identified by </code><code>'rman_password'</code><code>;</code>

<code>create database metastore default character </code><code>set</code> <code>utf8;</code>

<code>grant all privileges on metastore.* to </code><code>'hive'</code><code>@</code><code>'%'</code> <code>identified by </code><code>'hive_password'</code><code>;</code>

<code>create database sentry default character </code><code>set</code> <code>utf8;</code>

<code>grant all privileges on sentry.* to </code><code>'sentry'</code><code>@</code><code>'%'</code> <code>identified by </code><code>'sentry_password'</code><code>;</code>

<code>create database nav default character </code><code>set</code> <code>utf8;</code>

<code>grant all privileges on nav.* to </code><code>'nav'</code><code>@</code><code>'%'</code> <code>identified by </code><code>'nav_password'</code><code>;</code>

<code>create database navms default character </code><code>set</code> <code>utf8;</code>

<code>grant all privileges on navms.* to </code><code>'navms'</code><code>@</code><code>'%'</code> <code>identified by </code><code>'navms_password'</code><code>;</code>

3.5.6 配置Oozie庫(可選)

1)資料庫權限配置

<code>create database oozie default character </code><code>set</code> <code>utf8;</code>

<code>grant all privileges on oozie.* to </code><code>'oozie'</code><code>@</code><code>'localhost'</code> <code>identified by </code><code>'oozie'</code><code>;</code>

<code>grant all privileges on oozie.* to </code><code>'oozie'</code><code>@</code><code>'%'</code> <code>identified by </code><code>'oozie'</code><code>;</code>

2)配置Oozie庫所需軟連接配接

<code>cd</code> <code>/opt/cloudera/parcels/CDH/lib/oozie/lib/</code>

<code>ln</code> <code>-s </code><code>/usr/share/java/mysql-connector-java</code><code>.jar mysql-connector-java.jar</code>

3.5.7 啟動服務并配置開機啟動

<code>/etc/init</code><code>.d</code><code>/cloudera-scm-server</code> <code>start</code>

<code>chkconfig cloudera-scm-server on</code>

3.5.8 故障排除

<code>tail</code> <code>-f </code><code>/var/log/cloudera-scm-server/cloudera-scm-server</code><code>.out</code>

3.6 Cloudera Manager Agent安裝

3.6.1 建立壓縮包存放目錄

<code>mkdir</code> <code>-p </code><code>/opt/cloudera/parcels</code>

<code>chown</code> <code>cloudera-scm:cloudera-scm </code><code>/opt/cloudera/parcels</code>

3.6.2 指定管理伺服器和指定包存放目錄

vim編輯/etc/cloudera-scm-agent/config.ini確定參數如下并啟用:

<code>server_host=cdm-m.cmdschool.org</code>

<code>server_port=7182</code>

<code>parcel_dir=</code><code>/opt/cloudera/parcels</code>

3.6.3 指定運作單使用者模式的使用者名(僅用于單使用者模式,不配置)

vim編輯/etc/default/cloudera-scm-agent并取消以下行的注釋

<code>USER=</code><code>"cloudera-scm"</code>

3.6.4 啟動服務并配置伺服器開機啟動

<code>/etc/init</code><code>.d</code><code>/cloudera-scm-agent</code> <code>start</code>

<code>chkconfig cloudera-scm-agent on</code>

3.6.5 故障排除

如下指令監控啟動服務的錯誤輸出

<code>tail</code> <code>-f </code><code>/var/log/cloudera-scm-agent/cloudera-scm-agent</code><code>.out</code>

3.7 登陸配置

In Cloudera WEB Manager

<a href="http://10.168.0.120:7180/" target="_blank">http://10.168.0.120:7180/</a>

<a href="http://s1.51cto.com/wyfs02/M02/80/8E/wKioL1dD_OKz_FZwAABiN0PE3Ds578.png" target="_blank"></a>

界面配置部分本章節省略……

本文轉自 tanzhenchao 51CTO部落格,原文連結:http://blog.51cto.com/cmdschool/1775398,如需轉載請自行聯系原作者