目录
1.要求和支持的版本
(PS:我使用的环境,都用加粗标识了。)
1.1 支持的操作系统版本
Operating System | Version (bold=new) |
---|---|
RHEL/CentOS/OL with RHCK kernel | 7.6, 7.5, 7.4, 7.3, 7.2,6.10, 6.9 , 6.8 |
Oracle Linux (OL) | 7.4, 7.3, 7.2 (UEK default) |
SUSE Linux Enterprise Server | |
SLES | 12 SP4, 12 SP3, 12 SP2 |
Ubuntu | |
Ubuntu | 16.04 LTS (Xenial) |
(系统版本要求)
1.2硬件要求
Component | Storage | Notes |
---|---|---|
Partition hosting /usr | 1 GB | |
Partition hosting /var | 5 GB to 1 TB | Scales according to number of nodes managed. See table below. |
Partition hosting /opt | 15 GB minimum | Usage grows as the number of parcels downloaded increases. |
Cloudera Manager Database Server | 5 GB | If the Cloudera Manager Database is shared with the Service Monitor and Host Monitor, more storage space is required to meet the requirements for those components. |
(系统空间要求)
1.3 支持的MySql版本
MySQL版本 | Cloudera Enterprise 6.x |
---|---|
5.1(RHEL / CentOS / OEL 6的默认设置) | |
5.5(Debian 8.9的默认设置) | |
5.6 | |
5.7(Ubuntu 16.04、18.04 LTS的默认设置) |
(MySql版本要求)
1.4支持的JDKs
Cloudera企业版 | 支持的Oracle JDK | 支持的OpenJDK |
---|---|---|
5.3 -5.15 | 1.7、1.8 | 没有 |
5.16 和更高的5.x版本 | 1.7、1.8 | 1.8 |
6.0 | 1.8 | 没有 |
6.1 | 1.8 | 1.8 |
6.2 | 1.8 | 1.8 |
6.3 | 1.8 | 1.8、11.0.3或更高 |
(从上图可以看到6.0支持的是1.8版本)
1.5 推荐使用的JDK
Oracle JDK版本 | 笔记 |
---|---|
1.8u181 | 推荐/最新版本经过测试 |
1.8u162 | 推荐的 |
1.8u141 | 推荐的 |
1.8u131 | 推荐的 |
1.8u121 | 推荐的 |
1.8u111 | 推荐的 |
1.8u102 | 推荐的 |
1.8u91 | 推荐的 |
1.8u74 | 推荐的 |
1.8u31 | 最低要求 |
(推荐的MySql版本)
1.6CM和CDH兼容性
1.6.1 版本支持
当前的Cloudera Manager版本 | 支持的Cloudera Manager升级路径 | 支持的CDH升级路径 |
---|---|---|
6.0 | 6.3.x6.2.x6.1.x6.0.x维护版本 | 6.0.x维护版本CDH 5.7-5.14的任何次要版本 |
1.6.2 Cloudera Manager 6.0.0下载地址
类型 | 位置 (基本网址) | 回购文件 |
---|---|---|
兼容RHEL 7 | https://archive.cloudera.com/cm6/6.0.0/redhat7/yum/ | cloudera-manager.repo |
兼容RHEL6 | https://archive.cloudera.com/cm6/6.0.0/redhat6/yum/ | cloudera-manager.repo |
SLES 12 | https://archive.cloudera.com/cm6/6.0.0/sles12/yum/ | cloudera-manager.repo |
Ubuntu Xenial(16.04) | https://archive.cloudera.com/cm6/6.0.0/ubuntu1604/apt/ | cloudera-manager.lis |
1.6.5 CDH 6.0.0下载地址
储存库类型 | 位置 (基本网址) |
---|---|
包裹 | https://archive.cloudera.com/cdh6/6.0.0/parcels/ |
兼容RHEL 7 | https://archive.cloudera.com/cdh6/6.0.0/redhat7/yum/ |
兼容RHEL 6 | https://archive.cloudera.com/cdh6/6.0.0/redhat6/yum/ |
SLES 12 | https://archive.cloudera.com/cdh6/6.0.0/sles12/yum/ |
Ubuntu Xenial(16.04) | https://archive.cloudera.com/cdh6/6.0.0/ubuntu1604/apt/ |
2.环境搭建
PS:推荐能使用高版本就使用高版本进行搭建,因为很多老版本都逐渐被淘汰。这也是我花费了三天多时间,使用老版本centos6.5进行搭建遇到了很多坑,最终还是没搭建好总结的一个经验。原因就是你想安装某个软件,官方都不支持下载了,你还得到处找,然后匹配,有一点不匹配就会导致内核不支持,你要是再升级内核,就又得找,然后去安装去实验,麻烦的一批。跟不上时代了,你连哭的地都没有。就相当于互联网时代能在网上购票了,你还去排很长的队去现场买票,那么你就得乘坐交通工具去吧,跑很远的路,等有一天停止人工售票了,你难道还去找门子让别人帮你买票么?话说回来了,也就是软件停更了,你难道还去各个网站去找老版本么?
2.1安装Centos7.6
主机名 | cdh1 | cdh2 | cdh3 |
---|---|---|---|
IP地址 | 192.168.40.104 | 192.168.40.105 | 192.168.40.106 |
其它环境 | MySql,JDK | JDK | JDK |
首先去网站 http://archive.kernel.org/centos-vault/7.6.1810/isos/x86_64/ 把CentOS-7-x86_64-DVD-1810.iso 下载到本地。
下载VMWare虚拟机软件。使用VMWare进行安装,一共需要安装三台,主机名和ip配置如上所示。
PS:先安装一台,然后照着下面设置,设置完后克隆下修改主机名和ip就可以了。
安装步骤可参考: https://blog.csdn.net/babyxue/article/details/80970526
下面说下安装完成后如何配置IP地址和修改主机名:
安装vim(找个文件实验一下有没有,有的话忽略这步)
yum -y install vim*
网络和主机名设置
# cd /etc/sysconfig/network-scripts # vi ifcfg-ens33 --这里改为你自己的名称
修改内容如下:
#标记显示固定ip BOOTPROTO=static DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no NAME=eno16777736 UUID=c2cc280c-e0a6-4694-b062-e43b5f44db61 #网卡名 DEVICE=eno16777736 ONBOOT=yes #ip地址,这个以cdh1举例,我设定的为104,后面的cdh2,cdh3可以分别设置为105,106 IPADDR=192.168.40.104 #网关地址 GATEWAY=192.168.40.2 NETMASK=255.255.255.0 DNS1=114.144.144.114 DNS2=8.8.8.8
- 修改主机别名
vim /etc/hostname 修改为cdh1
PS:其它主机照着配置即可。 设置完后重启生效。
修改host文件映射别名
vim /etc/hosts 添加
192.168.40.104 cdh1
192.168.40.105 cdh2
192.168.40.106 cdh3
设置cdh1对其它主机免密钥。
在cdh1主机执行以下命令。
ssh-keygen -t rsa #一路回车即可
ssh-copy-id localhost #对本机免密钥,会提示输入本机密码
ssh-copy-id cdh2 #会提示输入cdh2的密码
ssh-copy-id cdh3 #会提示输入cdh3的密码
关闭防火墙
禁止开机启动
[root@cdh1 ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
SELINUX关闭
setenforce 0
vi /etc/selinux/config (SELINUX=disabled)
- 克隆到其它主机,并记得修改下主机名和ip
2.2安装MySql
建立一个mysql目录
[root@cdh1 etc]# mkdir -p /opt/mysql
[root@cdh1 etc]#cd /opt/mysql
下载安装
$ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
$ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
$ sudo yum update
$ sudo yum install mysql-server
$ sudo systemctl start mysqld
给root用户设置密码,授权,删除多余用户
[root@cdh1 mysql]# mysql
mysql> use mysql; --切库
mysql> select Host,User,Password,authentication_string from user; --查询下
mysql> grant all privileges on . to 'root'@'%' identified by '123456' WITH GRANT OPTION; --创建一个新root用户,并授权可以远程登陆
mysql> update user set authentication_string=password('123456') where user='root' and host='%'; --给用户添加远程登陆密码
mysql> select Host,User,Password,authentication_string from user; --再查询下,可以看的多了个一个root用户
+-----------+------+-------------------------------------------+-----------------------+
| Host | User | Password | authentication_string |
+-----------+------+-------------------------------------------+-----------------------+
| localhost | root | | |
| cdh1 | root | | |
| 127.0.0.1 | root | | |
| ::1 | root | | |
| localhost | | | NULL |
| cdh1 | | | NULL |
| % | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | |
+-----------+------+-------------------------------------------+-----------------------+
mysql> flush privileges; --刷新权限
mysql> quit; --退出
[root@VM_0_10_centos ~]# systemctl restart mysqld --重启下,登陆
[root@VM_0_10_centos ~]# mysql -uroot -p
Enter password:然后这个时候通常会提示以下错误:
ERROR 1045 (28000): Access denied for user 'root'@'cdh1' (using password: YES)。
网上查了很多解决方案,都让设置my.cnf配置文件,然后修改密码。但是这里并不是密码问题,而是上面的一些没密码的用户干扰的。把没密码的用户都删掉,反正也没用,然后就可以了。如下:
delete from mysql.user where Password ='' or Password is null;
flush privileges; --刷新权限
systemctl restart mysql --重启mysql,然后再登陆就可以登陆了,如下所示。
[root@cdh1 mysql]# mysql -uroot -p
Enter password:Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.47 MySQL Community Server (GPL)Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
2.3安装JDK8
2.3.1.首先下载
由于官网太慢了,还有有好心人把包搬到了Github上,这样我们就方便下载了。
https://github.com/frekele/oracle-java/releases
根据上面的推荐,这里我选择的1.8u181版本。
2.3.2.通过FTP上传到cdh1上面
PS:官方规定一定要上传到/usr/java目录下,没有就创建
在cdh1下面创建一个mysql目录
[root@cdh1 etc]# cd /usr/java/
通过FTP将下载好的jdk-8u181-linux-x64.tar.gz上传到目录并解压
tar -xvf jdk-8u181-linux-x64.tar.gz
2.3.3.配置环境
[root@cdh1 jdk1.8.0_181]# vim /etc/profile
在文件下方添加如下内容:
export JAVA_HOME=/opt/java/jdk1.8.0_181 export JAVA_HOME=/usr/java/jdk1.8.0_181 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
然后重启系统,使用命令java -version命令验证即可
[root@cdh1 ~]# java -version [root@cdh1 ~]# java -version java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
其它机器按照类似步骤配置即可。
2.4系统环境准备
2.4.1安装NTP
PS:NTP是个时间管理器,用于同步时间。
$ yum -y install ntp
$ systemctl enable ntpd #启用NTP
$ systemctl start ntpd #运行NTP
$ systemctl enable ntpd.service #设置开机启动
2.5为CM配置Repository(就是rpm仓库)
2.5.1 在cdh1,cdh2,cdh3安装ClouderaManager
sudo wget
根据1.6.2推荐,repo_file_url这里写: https://archive.cloudera.com/cm6/6.0.0/redhat7/yum/cloudera-manager.repo
$ sudo wget https://archive.cloudera.com/cm6/6.0.0/redhat7/yum/cloudera-manager.repo -P /etc/yum.repos.d/
2.5.2 导入存储库签名GPG密钥:
RHEL 7 compatible:
$ sudo rpm --import https://archive.cloudera.com/cm6/6.0.0/redhat7/yum/RPM-GPG-KEY-cloudera
2.6 安装Cloudera Manager服务
2.6.1在cdh1服务器安装server,daemons,agent
$ sudo yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server
2.6.2在cdh2,cdh3服务器安装daemons,agent
$ sudo yum install cloudera-manager-daemons cloudera-manager-agent
2.6.3 在所有主机上指定server服务器地址和端口
$ vim /etc/cloudera-scm-agent/config.ini
server_host配置CM Server服务器名,server_port配置CM Server端口
这里都要配置成:
server_host=cdh1
server_port=7182
2.6.4启动所有服务器的代理
$ sudo systemctl start cloudera-scm-agent
2.7配置MySql
2.7.1 停止服务器
sudo systemctl stop mysqld
2.7.2移除老的日志文件
例如将 /var/lib/mysql/ib_logfile0 和 /var/lib/mysql/ib_logfile1 移出 /var/lib/mysql/ 到别的地方备份。
2.7.3 更新 my.cnf 符合以下要求
设置缓存,死锁,最大连接数
vim /etc/my.cnf
为防止死锁设置隔离级别为 READ-COMMITTED.
设置存储引擎为InnoDB,而不是MyISAM
PS:InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持以及外部键等高级数据库功能。
可以使用命令查看用的哪个引擎:
mysql> show table status from [YourDatabaseName];
service服务器(这里是cdh1)设置
innodb_flush_method
属性为O_DIRECT
以提供更大吞吐量。根据服务器集群设置
max_connections
属性少于50台主机-您可以在同一台主机上存储多个数据库(例如,活动监视器和服务监视器)。如果这样做,您应该:
- 将每个数据库放在其自己的存储卷上。
- 每个数据库允许100个最大连接,然后添加50个额外的连接。例如,对于两个数据库,将最大连接数设置为250。如果在一个主机上存储五个数据库(Cloudera Manager Server,Activity Monitor,Reports Manager,Cloudera Navigator和Hive metastore的数据库),则将最大连接数设置为550。
- 超过50台不要在同一个主机上存储多个数据库。每个数据库应配置单独的主机。
超过1000台应设置
max_allowed_packet
为16M。
下面是一个推荐配置表:
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock transaction-isolation = READ-COMMITTED # Disabling symbolic-links is recommended to prevent assorted security risks; # to do so, uncomment this line: symbolic-links = 0 key_buffer_size = 32M max_allowed_packet = 32M thread_stack = 256K thread_cache_size = 64 query_cache_limit = 8M query_cache_size = 64M query_cache_type = 1 max_connections = 550 #expire_logs_days = 10 #max_binlog_size = 100M #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 and chown the specified folder to the mysql user. log_bin=/var/lib/mysql/mysql_binary_log #In later versions of MySQL, if you enable the binary log and do not set #a server_id, MySQL will not start. The server_id must be unique within #the replicating group. server_id=1 binlog_format = mixed read_buffer_size = 2M read_rnd_buffer_size = 16M sort_buffer_size = 8M join_buffer_size = 8M # InnoDB settings innodb_file_per_table = 1 innodb_flush_log_at_trx_commit = 2 innodb_log_buffer_size = 64M innodb_buffer_pool_size = 4G innodb_thread_concurrency = 8 innodb_flush_method = O_DIRECT innodb_log_file_size = 512M [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid sql_mode=STRICT_ALL_TABLES
确保数据库启用
$ sudo systemctl enable mysqld
启动数据库
$ sudo systemctl start mysqld
2.7.4安装MySql JDBC驱动程序
在所有数据据服务器安装JDBC程序。官网推荐安装5.1版本。安装步骤如下:
其中可以先在cdh1安装,然后复制到cdh2和cdh3即可(cdh2和cdh3安装了,就可以使用cdh1数据库了。):
下载JDBC驱动程序
[root@cdh1 mysql]# cd /opt/mysql
[root@cdh1 mysql]# mkdir jdbcDriver
[root@cdh1 mysql]# cd jdbcDriver
[root@cdh1 jdbcDriver]# wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz
放入到/usr/share/java目录下
[root@cdh1 jdbcDriver]# tar -xf mysql-connector-java-5.1.46.tar.gz
[root@cdh1 jdbcDriver]# cd mysql-connector-java-5.1.46
[root@cdh1 mysql-connector-java-5.1.46]# sudo mkdir -p /usr/share/java --创建java目录
[root@cdh1 mysql-connector-java-5.1.46]# cp mysql-connector-java-5.1.46.jar /usr/share/java/mysql-connector-java.jar --将驱动复制到/usr/share/java目录,并重命名
2.7.5为cloudera创建数据库
登陆数据库
systemctl start mysqld
$ mysql -u root -p
Enter password:
创建数据库
语法参考:
- 创建数据库:
mysql>CREATE DATABASE
DEFAULT CHARACTER SET DEFAULT COLLATE utf8_general_ci; Query OK, 1 row affected (0.00 sec)
- 给用户授权:
GRANT ALL ON
.* TO ' '@'%' IDENTIFIED BY ' '; Query OK, 0 rows affected (0.00 sec)
flush privileges;
需要创建的表:
Service | Database | User |
---|---|---|
Cloudera Manager Server | scm | scm |
Activity Monitor | amon | amon |
Reports Manager | rman | rman |
Hue | hue | hue |
Hive Metastore Server | metastore | hive |
Sentry Server | sentry | sentry |
Cloudera Navigator Audit Server | nav | nav |
Cloudera Navigator Metadata Server | navms | navms |
Oozie | oozie | oozie |
拿Cloudra Manager Server举例:
- 创建数据库scm,hive,hue,oozie
$ mysql> CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
$ mysql> CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
$ mysql> CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
$ mysql> CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
- 给用户授权
mysql> GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql> GRANT ALL ON metastore.* TO 'hive'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql> GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql> GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql>use mysql; --注意切换数据库哦
mysql> update user set authentication_string=password('123456') where user='scm' and host='%'; --自己创建的用户是没有密码的,手动更新
mysql> update user set authentication_string=password('123456') where user='hive' and host='%'; --自己创建的用户是没有密码的,手动更新
mysql> update user set authentication_string=password('123456') where user='hue' and host='%'; --自己创建的用户是没有密码的,手动更新
mysql> update user set authentication_string=password('123456') where user='oozie' and host='%'; --自己创建的用户是没有密码的,手动更新
mysql> flush privileges; --刷新权限
- 确认下是否创建成功
mysql>SHOW DATABASES;
mysql>SHOW GRANTS FOR 'scm'@'%';
mysql>SHOW GRANTS FOR 'hive'@'%';
mysql>SHOW GRANTS FOR 'hue'@'%';
mysql>SHOW GRANTS FOR 'oozie'@'%';
PS:%授权用户本地登陆的时候需要指定主机: mysql -u用户名 -p密码 -h192.168.9.111
2.8设置Cloudea Manager数据库
假如2.7.5你已经配置好的数据库,执行下面:
sudo /opt/cloudera/cm/schema/scm_prepare_database.sh
-h 主机名或IP
例如:
sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm -h cdh1
如果2.7.5没有配置,执行下面
sudo /opt/cloudera/cm/schema/scm_prepare_database.sh [选项]
例如:
sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm -uroot -p123456
2.9安装CDH和其它软件
2.9.1启动Cloudra Manager服务器
注意:建议先参考2.9.3里面的图8,将文件下载到本地,然后上传到服务器,再进行下面操作,不然访问外国的网站很慢,会导致无法下载,很麻烦,这个坑我帮你踩过了,别怪没提醒哦~
$ sudo systemctl start cloudera-scm-server
等待几分钟,以启动Cloudera Manager Server。要观察启动过程,请在Cloudera Manager Server主机上运行以下命令:
$ sudo tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
当出现一下内容时证明安装成功了:
INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server.
2.9.2登陆UI系统
访问地址: http://
这里是:
http://cdh1:7180
默认登陆账号和密码都是admin
2.9.3进入系统,开始安装流程
注意:可以提前参考地——步,将文件下载到本地,然后上传到服务器,
图1:
图2:
图3:
图4:
图5:
图6:
图7:
图8:
PS:如果下载比较慢的话,可以手动下载到本地(本地也慢的话,可以使用一台国外云服务器进行下载,下载完后再通过FTP下载到本地),然后上传到Manager Server服务器的/opt/cloudera/parcel-repo 下面。然后注意注意,这里需要重启manager service服务。然后重新登陆,不然它还会自动下载!!!
重启完后继续,报了异常:主机运行不良。查了下 解决方案,删除cm_guid 文件,然后重启agent服务。
rm -f /var/lib/cloudera-scm-agent/cm_guid --移除
sudo systemctl restart cloudera-scm-server
sudo systemctl restart cloudera-scm-agent
登陆数据库,删除上面创建的scm数据库里面的所有的表。
sudo tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
然后再重新登陆。挺费时间的,毕竟重启一次很慢,不过也没办法啦~
图9:
图10:
图11:
PS:上面提示红色表示有错误,黄色表示警告,绿色表示正常。查询错误不用管,等集群运行一会有数据了就显示了。
上面可能遇到的问题及解决方案:
问题1:Could not create the Java Virtual Machine。。。。
解决方案:这个是虚拟机内存太小造成的,改大些就好了。参考链接
问题2: Actually, the** Job History server** would be owned by mapred
and if you want to see the exact permissions you should refer to:
解决方案:这个是没有权限造成的。参考链接
问题3: 此角色的主机的运行状况为存在隐患。 以下运行状况测试存在隐患: 正在交换。
原理参考 解决方案就是加大电脑内存,然后加大虚拟机内存。(PS:所以想学大数据,先装内存条吧,哈哈哈~)
解决后来张图:
来源:https://www.cnblogs.com/shun7man/p/12368349.html