# 配置十台服务器 每台服务器的配置如下 :
| Cores(内核) | Memeory(内存) | Disk(磁盘) |
|---|---|---|
| 1 | 48 | 256 |
| 2 | 48 | 256 |
| 3 | 48 | 256 |
| 4 | 48 | 256 |
| 5 | 48 | 256 |
| 6 | 48 | 256 |
| 7 | 48 | 256 |
| 8 | 48 | 256 |
| 9 | 48 | 256 |
| 10 | 48 | 256 |
# 每台服务器配置的服务角色如下:
| IP | Zookeeper服务 | Yarn服务 | Hive服务 | Oozie服务 | HDFS服务 | Spark服务 | CM服务 |
|---|---|---|---|---|---|---|---|
| 10.212.6.51 | Server | JobHistoty Server,NodeManager, ResourceManager(活动) | Hive metastore Server,HiveServer2 | Oozie Serve | NameNode(活动),JournalNode,HttpFS,Failover Controller | History Server | alert Publisher,Host Monitor,Service Monitor,EventServer |
| 10.212.6.52 | —— | NodeManager , ResourceManager(备用) | —— | —— | NameNode(备用),JournalNode,HttpFS,Failover Controller | —— | —— |
| 10.212.3.51 | —— | NodeManager | —— | —— | JournalNode,HttpFS,DataNode | —— | —— |
| 10.212.3.52 | —— | NodeManager | —— | —— | JournalNode,HttpFS,DataNode | —— | —— |
| 10.212.3.53 | —— | NodeManager | —— | —— | JournalNode,HttpFS,DataNode | —— | —— |
| 10.212.3.54 | —— | NodeManager | —— | —— | DataNode | —— | —— |
| 10.212.3.55 | Server | NodeManager | —— | —— | DataNode | —— | —— |
| 10.212.3.56 | Server | NodeManager | —— | —— | DataNode | —— | —— |
| 10.212.3.57 | Server | NodeManager | —— | —— | DataNode | —— | —— |
| 10.212.3.58 | Server | NodeManager | —— | —— | DataNode | —— | —— |
| 服务 | 版本 |
|---|---|
| CDH | 6.1.0 |
| JDK | 1.8.0_111 |
| MySQL | 5.7.23 |
| HDFS | 3.0.0 |
| Yarn | 3.0.0 |
| MapReduce | 3.0.0 |
| Hive | 2.1.1 |
| Hue | 3.9.0 |
| Spark | 2.4.0 |
| Zookeeper | 3.4.5 |
#各服务中角色详解如下:
| 角色 | 服务 | 作用 |
|---|---|---|
| alert Publisher | Cloudera Management | 警告通知,生成相关类型警告通知事件并提供SNMP服务供第三方收集信息。 |
| Event Server | Cloudera Management | 事件服务,收集hadoop相关事件并据此生成警告信息 |
| Host Monitor | Cloudera Management | 主机检测,收集主机运行健康指标信息 |
| Service Monitor | Cloudera Management | 服务检测,收集有关服务的运行状况和指标信息以及YARN和Impala服务中的活动信息 |
| NameNode | HDFS | 主要负责管理hdfs文件系统 |
| JournalNode | HDFS | 两个Namenode之间同步数据 |
| HttpFS | HDFS | 1.可以在浏览器中对hdfs进行读写操作 |
| 2.通过REST风格的API管理HDFS。 | ||
| Failover Controller | HDFS | 负责监视和管理NameNode的状态 |
| DataNode | HDFS | 数据节点,负责存储数据 |
| Hive metastore server | Hive | 服务端,客户端发送请求,server去远程metastore查询信息并返回 |
| Hive Server2 | Hive | 能使客户端执行Hive查询的服务 |
| Spark history server | Spark | 应用程序的运行信息写入指定目录后,将运行信息装载,以web的方式供用户浏览 |
| Yarn ResourceManager | Yarn | 负责集群中所有资源的统一管理和分配,接受NM的资源汇报信息 |
| Yarn NodeManager | Yarn | 资源和任务管理器,定时地向RM汇报节点上的资源使用情况和Container的运行状态 |
| Yarn JobHistory Server | Yarn | 向用户提供历史的mapred Job 查询。 |
| Zookeeper Server | Zookeeper | ZooKeeper服务端,维护和同步配置数据的集中服务 |
| Oozie Server | Oozie | 任务调度器,提供任务编排、执行的功能 |
#下载地址 : https://ro-bucharest-repo.bigstepcloud.com/cloudera-repos/cm6/redhat/7/x86_64/cm/6.1.0/RPMS/x86_64/
选择对应的版本下载
生产环境下载地址:
#使用ROOT用户上传下载的文件到主节点2.2 parcels包下载
#下载地址 : https://ro-bucharest-repo.bigstepcloud.com/cloudera-repos/cdh6/parcels/6.1.0/
选择对应的版本进行下载
3.安装CDH的准备工作 3.1 安装 JDK a. CM 对JDK的需求(官方需求):1.JDK必须是64位,不能为32位 2.安装的JDK必须是下述表格中支持的版本 3.集群中每台服务器的JDK版本必须相同 4.JDK安装的目录必须为 /usr/java/jdk-'版本号' 没有就创建
| Cloudera企业版 | 支持的Oracle JDK | 支持的OpenJDK |
|---|---|---|
| 5.16及更高的5.X版本 | 1.7 /1.8 | 1.8 |
| 6.0 | 1.8 | none |
| 6.1 | 1.8 | 1.8 |
| 6.2 | 1.8 | 1.8 |
| 6.3 | 1.8 | 1.8、11.0.3 或更高版本 |
#1.下载地址: Oracle官网下载地址 : https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html #2.解压下载的压缩包: 下载对应的JDK的tar包到 主节点 的/usr/java/目录下 进行解压 tar -zxvf jdk-8u111-linux-x64.tar.gz -- 将gz压缩文件解压到当前目录 #3.配置环境变量:vim /etc/profile 每台服务器都要进行配置 export JAVA_HOME=/usr/java/default export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar #4.重新加载配置文件 source /etc/profilec . 验证JDK是否安装成功
#1.看看 是否设置了jdk环境变量 echo $JAVA_HOME #2.看看能否查看Java版本 java -version3.2 更改主机名与Hosts a. 编辑 /etc/hosts 文件
设置集群中每一台主机的IP地址和全称域名
vi /etc/hosts
uname -a3.3 关闭防火墙 a. 关闭防火墙
#关闭防火墙 systemctl stop firewalld #防火墙开机不启动 systemctl disable firewalldb. 验证防火墙关闭是否成功
#防火墙状态 systemctl status firewalld3.4 时间同步 ,安装NTP a. 所有节点安装NTP服务
yum -y install ntpb. 修改ntp.conf文件
vim /etc/ntp.conf
server 10.212.5.52 # 在其余的节点上,把时间服务器的server指向master namenode节点 # 在所有节点 systemctl start ntpd systemctl enable ntpd
#修改其余服务器的 /etc/ntp.conf server 10.212.6.51c. 验证集群时间是否进行同步
#在集群中的十台服务器中同时执行 date 命令 查看时间是否同步 可以编写For循环3.5 配置免密登录 a. 生成公钥进行免密配置
#1.生成公钥
ssh-keygen -t rsa
#2.拷贝到其它机器
ssh-copy-id -i ~/.ssh/id_rsa.pub 10.212.6.52
#3.此处做一个循环
for i in {1..8};do ssh-copy-id -i ~/.ssh/id_rsa.pub 10.212.3.5$i;done
6.52进行手动拷贝
注意:
以上步骤,在每一台(共十台)服务器中生成公钥,然后拷贝到其它服务器(除此之外九台),
b. 验证免密配置是否成功#在任意一台服务器 远程连接到其它服务器 测试是否成功 第一次登录的时候根据提示输入yes3.6 安装MySQL数据库 a.下载MySQL数据库进行安装
#Mysql下载地址 : https://downloads.mysql.com/archives/community/
解压下载的Tar包到指定的目录,启动MySQL
sudo systemctl start mysqld
配置Mysql ,先关闭Mysql
#1.关闭MySQL sudo systemctl stop mysqld #2.将/var/lib/mysql/ib_logfile0 和 /var/lib/mysql/ib_logfile1文件 从/var/lib/mysql/ 目录移除,移动到一个自己备份的目录下。 #3.打开并且修改etc/my.cnf文件 vim /etc/my.cof #4.将MySQL设置为开启启动 sudo systemctl enable mysqld #5.启动MySQL sudo systemctl start mysqld #6.找到安装后的临时密码 sudo grep 'temporary password' /var/log/mysqld.log #注:如果无法找到临时密码,说明没有成功安装,重新卸载Mysql 删除Mysql 相关目录后重新安装。 #7.运行 /usr/bin/mysql_secure_installation 设置新的root密码,并配置安全相关的设置,这里需要用到上面找到的临时密码。 sudo /usr/bin/mysql_secure_installation #8.根据提示完成操作 [...] Enter current password for root (enter for none): OK, successfully used password, moving on... [...] Set root password? [Y/n] Y New password: Re-enter new password: Remove anonymous users? [Y/n] Y [...] Disallow root login remotely? [Y/n] N [...] Remove test database and access to it [Y/n] Y [...] Reload privilege tables now? [Y/n] Y All done!
my.cof配置
# For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock transaction-isolation = READ-COMMITTED 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 log_bin=/var/lib/mysql/mysql_bin server_id=1 binlog_format = mixed read_buffer_size = 2M read_rnd_buffer_size = 16M sort_buffer_size = 8M join_buffer_size = 8M 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/lib/mysql/mysql.log pid-file=/var/lib/mysql/mysql.pidb. 安装JDBC
#1.下载“.tar.gz” 格式的Mysql JDBC 驱动 https://dev.mysql.com/downloads/connector/j/5.1.html #2.解压JDBC 的jar 文件 tar zxvf mysql-connector-java-5.1.46.tar.gz #3.将JDBC 驱动文件 重命名,并copy 到 /usr/share/java/目录下。 sudo cp mysql-connector-java-5.1.46-bin.jar /usr/share/java/mysql-connector-java.jarc. 验证MySQL安装是否成功
#使用Root用户 密码登录MySQL mysql -uroot -p1234564.安装CM
由于在线安装Cloudera Manager和CDH 受网速影响比较大,很容易下载失败,建议建立本地仓库,这样可以提升安装速度。
4.1 安装httpd Server a. 下载httpd Serve# 安装httpd Server yum install -y httpd # 启动该服务 systemctl start httpd.service #启动 systemctl stop httpd.service #停止 systemctl restart httpd.service #重启 # 设置该服务是否开机启动 systemctl enable httpd.service #开机启动 systemctl disable httpd.service #开机不启动 # 查看该服务的状态 systemctl status httpd.serviceb. 构建本地Yum源
#1.创建目录 mkdir -p /var/www/html/cmf/parcel/download #2.将下载好的CM的RPM包与Parcel包拷贝到/var/www/html/cmf/parcel/download目录下 CDH-6.1.0-1.cdh6.1.0.p0.770702-el7.parcel CDH-6.1.0-1.cdh6.1.0.p0.770702-el7.parcel.sha manifest.json cloudera-manager-agent-6.1.0-769885.el7.x86_64.rpm cloudera-manager-daemons-6.1.0-769885.el7.x86_64.rpm cloudera-manager-server-6.1.0-769885.el7.x86_64.rpm cloudera-manager-server-db-2-6.1.0-769885.el7.x86_64.rpm oracle-j2sdk1.8-1.8.0+update141-1.x86_64.rpm
配置服务器配置文件,防止从本地库下载parcel 文件出现Hash verification failed 错误信息。修改配置文件/etc/httpd/conf/httpd.conf
c. 配置Yum仓库的配置文件这个位置 修改 AddType 为 AddType application/x-gzip .gz .tgz .parcel 修改 ServerName
#创建/etc/yum.repos.d/cloudera-repo.repo文件 内容设置如下 [cloudera-repo] name=cloudera-repo baseurl=http://10.212.6.51:80/cmf/parcel/download/ gpgcheck=0 enabled=1d. 验证是否配置成功
在浏览器输入URL http://10.212.6.51/cmf/parcel/download/4.2 安装CM的Server + Agent
# 进入创建的CM的文件目录下 cd /var/www/html/cmf/parcel/download # 安装cloudera-manager-daemons-5.7.0-1.cm570.p0.76.el7.x86_64.rpm yum install cloudera-manager-daemons-6.1.0-769885.el7.x86_64.rpm # 安装cloudera-manager-server-5.7.0-1.cm570.p0.76.el7.x86_64.rpm,请注意,不用安装db版本的,那是使用默认数据库的,在生产环境中一般不使用,生产环境中是使用MySQL数据库的 yum -y install cloudera-manager-server-6.1.0-769885.el7.x86_64.rpm yum -y install cloudera-manager-agent-6.1.0-769885.el7.x86_64.rpm4.3 MySQL中创建元数据库 a. 创建数据库
# 在MySQL中创建元数据库
create database scm DEFAULT CHARACTER SET utf8;
create database amon DEFAULT CHARACTER SET utf8;
create database hive DEFAULT CHARACTER SET utf8;
create database oozie DEFAULT CHARACTER SET utf8;
create database hue DEFAULT CHARACTER SET utf8;
grant all on scm.* TO 'root'@'%' IDENTIFIED BY '123456';
grant all on amon.* TO 'root'@'%' IDENTIFIED BY '123456';
grant all on hive.* TO 'root'@'%' IDENTIFIED BY '123456';
grant all on oozie.* TO 'root'@'%' IDENTIFIED BY '123456';
grant all on hue.* TO 'root'@'%' IDENTIFIED BY '123456';
# 创建scm用户,并创建scm数据库,此数据库需在CDH的数据库配置文件中配置
create database scm DEFAULT CHARACTER SET utf8;
grant all on scm.* TO 'scm'@'%' IDENTIFIED BY '123456';
flush privileges;
# 创建其他数据库,并授权
create database amon DEFAULT CHARACTER SET utf8;
grant all on amon.* TO 'amon'@'%' IDENTIFIED BY '123456';
flush privileges;
create database hive DEFAULT CHARSET SET utf8;
grant all on hive.* TO 'hive'@'%' IDENTIFIED BY '123456';
flush privileges;
create database oozie DEFAULT CHARSET SET utf8;
grant all on oozie.* TO 'oozie'@'%' IDENTIFIED BY '123456';
flush privileges;
create database hue DEFAULT CHARACTER SET utf8;
grant all on hue.* TO 'hue'@'%' IDENTIFIED BY '123456';
flush privileges;
#给MySQL授权时会出现密码问题,可以执行如下命令
set global validate_password_policy=LOW;
set global validate_password_length=6;
#修改CDH关于数据库的配置文件(如下图所示)
vim /etc/cloudera-scm-server/db.properties
# 上传与MySQL连接的jar包(注:jar包需要放入如下目录,没有就创建)
# 所有节点都需要执行
cd /usr/share/java
# 上传jar包,并修改jar包的名字(此jar包不需要版本号)
mv mysql-connector-java-8.0.15.jar mysql-connector-java.jar
b. 验证数据库是否创建成功
#在MySQL中查看创建的数据库 SHOW DATAbaseS;4.4 验证CM的Server和Agent是否安装成功
#启动 service cloudera-scm-server start service cloudera-scm-server status #在启动时有可能碰到The server time zone value 'EDT' is unrecognized异常,这是mysql的时区和系统的时区不匹配,可以参考如下网站解决 https://blog.csdn.net/u010003835/article/details/88974898 #查看日志 cd /var/log/cloudera-scm-server/ tail -f cloudera-scm-server.log # 出现如下7180即证明启动成功 WebServerImpl:org.mortbay.log: Started SelectChannelConnector@0.0.0.0:7180
启动成功 :
查看MySQL数据库,会发现scm数据库下会自动创建表:
使用命令会查看到连接scm的用户的具体信息:
show processlist;4.5 在浏览器的web页面上安装和配置CM
当service cloudera-scm-server start启动成功后,即可以在浏览器上服务7180端口(开放防火墙)。
1.浏览器输入http://10.212.6.51:7180 ,登陆CM的Web界面, 账号密码默认Admin
2.同意许可条件跟条款
3. 选择CM的版本:
4.搜索模式,搜索需要安装CDH的主机:
a. 截图 5.安装CDH 3.8 在web页面上安装CDH集群 1. 选择存储库 a. 资料截图点击更多选项,将其他远程Parcel删除,并输入先前配置好的Parcel:
默认不安装
建议启用:
不启用单用户模式,后期各服务之间访问权限受限,建议第一次安装CDH启用单用户5. 提供 SSH 登录凭据 a. 截图
自由选择,这里直接使用root用户:
6. 进行集群安装 7. 安装选定Parcel先前配置的Parcel就作用于此处,如果不进行此配置会去官网进行下载,对网络要求很高,并网络中断后会重新下载,较麻烦,使用此配置可以直接下载成功,并速度很快:
8. 检查主机正确性完成安装对集群中得主机 进行检查配置
安装完CDH后,CDH Manager一般会提示用户需要做一些Linux系统层面的优化,主要包括两类:禁止透明大页面及交换分区设置。详情请参考Cloudera官方网址:
https://www.cloudera.com/documentation/enterprise/latest/topics/cdh_admin_performance.htmla. 关闭透明大页面
#1. 首先查看透明大页是否启用,[always] never表示已启用,always [never]表示已禁用 cat /sys/kernel/mm/transparent_hugepage/defrag [always] madvise never #2. 如果是启用状态,修改/etc/rc.local文件并添加以下两行, echo never > /sys/kernel/mm/transparent_hugepage/defrag echo never > /sys/kernel/mm/transparent_hugepage/enabledb. 修改Swappiness
Linux内核参数vm.swappiness,值的范围为0100,表示系统什么时候开始进行物理内存与虚拟内存的交换。举个例子,系统总内存为64G,vm.swappiness为60,表示在系统内存使用64*0.4=25.6G的时候开始物理内存与虚拟内存的交换,这个动作势必会影响系统的性能。因此,Cloudera建议把这个值修改为110。
#1. 首先检查当前设置的vm.swappiness值 cat /proc/sys/vm/swappiness #2. 修改Swappiness值 echo "vm.swappiness=10" >> /etc/sysctl.conf6. CDH集群服务添加 1. 选择批量安装的CDH服务: 2. 自定义角色分配 a. 资料截图 3. 进行数据库设置 a. 资料截图
此步骤中用到的数据库在上述的MySQL数据库中均进行了创建和授权:
4. 审核更改 a. 资料截图此步骤中需要跟据磁盘情况配置,如果多磁盘,可配置多个目录:
到此配置完成 ,集群首次运行,会自动运行全部服务
对于配置HDFS的HA与Yarn的HA步骤与搭建过程中的各种问题下期分享。



