入门Hadoop---安装ClouderaManager,CDH和Impala,Hue,oozie等服务

孤人 提交于 2020-02-26 19:04:13

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 -P /etc/yum.repos.d/

根据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://:7180

这里是:

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:所以想学大数据,先装内存条吧,哈哈哈~)

解决后来张图:

系列传送门

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!