# 大數據平台CDH集群安裝
介紹了 CDH 集群的搭建與安裝
標簽: Cloudera-Manager CDH Hadoop 部署 集群
<!-- more -->
> 目前Hadoop比較流行的主要有2個版本,Apache和Cloudera版本。
>
> - Apache Hadoop:維護人員比較多,更新頻率比較快,但是穩定性比較差。
> - Cloudera Hadoop(CDH):CDH:Cloudera公司的發行版本,基於Apache Hadoop的二次開發,優化了組件兼容和交互接口、簡化安裝配置、增加Cloudera兼容特性。
## 1. 操作環境
- CentOS 7.3 x64 (4C/10G/50G)
- Cloudera Manager:6.0.1
- CDH: 6.0.1
相關包地址
Cloudera Manager下載地址:[https://archive.cloudera.com/cm6/6.0.0/redhat7/yum/RPMS/x86_64/](https://archive.cloudera.com/cm6/6.0.0/redhat7/yum/RPMS/x86_64/)
> - cloudera-manager-agent-6.0.0-530873.el7.x86_64.rpm
> - cloudera-manager-daemons-6.0.0-530873.el7.x86_64.rpm
> - cloudera-manager-server-6.0.0-530873.el7.x86_64.rpm
> - cloudera-manager-server-db-2-6.0.0-530873.el7.x86_64.rpm
> - oracle-j2sdk1.8-1.8.0+update141-1.x86_64.rpm
CDH安裝包地址:[https://archive.cloudera.com/cdh6/6.0.0/parcels/](https://archive.cloudera.com/cdh6/6.0.0/parcels/)
> - CDH-6.0.0-1.cdh6.0.0.p0.537114-el7.parcel
> - CDH-6.0.0-1.cdh6.0.0.p0.537114-el7.parcel.sha256
> - manifest.json
注意:以下操作均用root用戶操作。
## 2. 網絡配置(所有節點)
**在所有節點上把IP和主機名的對應關系寫入**
```bash
vim /etc/hosts
# 注釋掉原有的語句, 增加:
192.192.0.25 server
192.192.0.26 chdagent1
192.192.0.27 chdagent2
```
**在相應的節點主機上修改主機名**
```bash
vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=cdhserver
# 修改或者添加 HOSTNAME=cdhserver
```
> cdhserver 是你起的的主機名字
**執行命令**
```
# hostname cdhserver
```
CentOS7要多執行以下這步:
```
hostnamectl set-hostname cdhserver
```
## 3. 打通SSH
設置ssh無密碼登陸(所有節點)
## 4. 關閉防火牆和SELinux
注意: 需要在所有的節點上執行,因為涉及到的端口太多了,臨時關閉防火牆是為了安裝起來更方便,安裝完畢后可以根據需要設置防火牆策略,保證集群安全。
關閉防火牆並關閉自啟動:
```bash
systemctl stop firewalld
systemctl disable firewalld
```
## 5. 所有節點配置NTP服務
集群中所有主機必須保持時間同步,如果時間相差較大會引起各種問題。 具體思路如下:
master節點作為ntp服務器與外界對時中心同步時間,隨后對所有datanode節點提供時間同步服務。
所有datanode節點以master節點為基礎同步時間。
所有節點安裝相關組件:
```bash
yum install ntp
```
啟動服務:
```bash
systemctl start ntpd
```
配置開機啟動:
```bash
systemctl enable ntpd
```
## 6. 安裝 python 2.7
必須是python2.7版本,CentOS 7 系統可以不用裝,系統自帶的。
```
#下載並安裝EPEL,安裝python-pip,psycopg2有依賴
[root@localhost ~]# wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[root@localhost ~]# rpm -ivh epel-release-latest-7.noarch.rpm
[root@localhost ~]# yum repolist #檢查是否已添加至源列表
```
升級軟件依賴版本
Starting with CDH 6, PostgreSQL-backed Hue requires the Psycopg2 version to be at least 2.5.4
首先安裝epel擴展源:
```bash
yum -y install epel-release
yum -y install python-pip
pip install --upgrade psycopg2
```
[root@hubserver1 app]# yum install bind-utils
[root@hubserver1 app]# yum install wget
[root@hubserver1 app]# yum provides '*/applydeltarpm'
[root@hubserver1 app]# yum install deltarpm
## 7. 准備Parcels,用以安裝CDH6
將CHD6相關的Parcel包放到主節點的/opt/cloudera/parcel-repo/目錄中,如果沒有此目錄,可以自己創建。
> - CDH-6.0.0-1.cdh6.0.0.p0.537114-el7.parcel
> - CDH-6.0.0-1.cdh6.0.0.p0.537114-el7.parcel.sha256
> - manifest.json
注意:最后將CDH-6.0.0-1.cdh6.0.0.p0.537114-el7.parcel.sha256,重命名為CDH-6.0.0-1.cdh6.0.0.p0.537114-el7.parcel.sha
**安裝repo**:
```bash
wget https://archive.cloudera.com/cm6/6.0.0/redhat7/yum/cloudera-manager.repo -P /etc/yum.repos.d/
```
**導入GPG key**:
```bash
rpm --import https://archive.cloudera.com/cm6/6.0.0/redhat7/yum/RPM-GPG-KEY-cloudera
```
**JDK install**:
> yum install oracle-j2sdk1.8
>
> 注意 :
>
> - 使用 yum 下載,需要確定版本與安裝CDH6官方要求的需要的版本一致
> - 也可不使用 yum 安裝,使用自己下載 JDK,然后手動綠色安裝配置
> - 也可在安裝 CM 的時候,再根據提示來安裝需要的 JDK
>
> 三種方式任選其一便可
**yum安裝CM**:
```bash
yum install cloudera-manager-server
```
## 8. 安裝MySql
```bash
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum update
yum install mysql-server
systemctl start mysqld
systemctl enable mysqld
```
初始化Mysql
```bash
/usr/bin/mysql_secure_installation
```
配置JDBC
```bash
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz
tar zxvf mysql-connector-java-5.1.46.tar.gz
mkdir -p /usr/share/java/
cd mysql-connector-java-5.1.46
cp mysql-connector-java-5.1.46-bin.jar /usr/share/java/mysql-connector-java.jar
```
建庫:根據官方文檔提供的命名建庫,方便記憶。(在CM配置CDH的時候會用到這些庫名)
> Set up the Cloudera Manager Database:/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm
出現如下日志:
```bash
JAVA_HOME=/usr/java/jdk1.8.0_141-cloudera
Verifying that we can write to /etc/cloudera-scm-server
Creating SCM configuration file in /etc/cloudera-scm-server
Executing: /usr/java/jdk1.8.0_141-cloudera/bin/java -cp /usr/share/java/mysql-connector-java.jar:/usr/share/java/oracle-connector-java.jar:/usr/share/java/postgresql-connector-java.jar:/opt/cloudera/cm/schema/../lib/* com.cloudera.enterprise.dbutil.DbCommandExecutor /etc/cloudera-scm-server/db.properties com.cloudera.cmf.db.
[main] DbCommandExecutor INFO Successfully connected to database.
All done, your SCM database is configured correctly!
```
## 9. 啟動CM服務
啟動:
```bash
systemctl start cloudera-scm-server
```
查看日志:
```bash
tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
```
> 出現:INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server.則表示服務正常啟動
登錄 http://<server_host>:7180 賬號:admin
## 10. Hive 亂碼問題
- [參考文章 - HIVE 亂碼問題](https://blog.csdn.net/wtzhm/article/details/82022110)
**登錄集群主節點, 進入mysql:**
```bash
mysql -u root -p
```
**進入數據庫 metastore**
```bash
show databases;
use metastore
```
**執行以下 5 條 SQL 語句:**
修改表字段注解和表注解
```bash
alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
```
修改分區字段注解
```bash
alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8 ;
alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;
```
修改索引注解
```bash
alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
```
修改完畢后,重新建立 Hive 表,然后進入 Hive 交互端,執行 desc table\_name:
```
hive> desc ods_dm_t1;
OK
bank_id string 銀行ID
bank_name string 銀行名稱
Time taken: 0.051 seconds, Fetched: 2 row(s)
hive>
```
已經生效。
## Reference
- [CDH 6.0.0 搭建][1]
- [CDH6.0.0詳細安裝教程及所遇到的問題][2]
- [官方文檔 - Cloudera Installation Guide][3]
[1]: https://blog.csdn.net/caolijun1166/article/details/82714387
[2]: http://blog.51cto.com/pizibaidu/2174297
[3]: https://www.cloudera.com/documentation/enterprise/6/6.0/topics/installation.html
