CDH搭建
虚拟机工具VMware下载参考地址:
https://blog.csdn.net/weixin_52799373/article/details/124324077?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171633702316777224413574%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=171633702316777224413574&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-124324077-null-null.142^v100^control&utm_term=vmware%E8%99%9A%E6%8B%9F%E6%9C%BA%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B&spm=1018.2226.3001.4187 |
我已经将网页中用到的安装包下载好了,一个VMware 16 pro版本的安装包,一个centerOS7驱动。
链接:https://pan.quark.cn/s/a2070e130c28
提取码:3jqy
准备工作:
下载好cdh安装包、jdk安装、mysql安装包
这里下载好了,从我的网盘自己取就行
链接:https://pan.quark.cn/s/2157608eb715
提取码:kymT
我的虚拟机配置:
本人电脑内存32G
静态ip | 名称 | 内存大小 | 内核 | 存储大小 |
192.168.231.201 | cm1 | 16G | 4 | 50G |
192.168.231.202 | cm2 | 4G | 4 | 50G |
192.168.231.203 | cm3 | 4G | 4 | 50G |
虚拟机环境准备:
参考地址:
https://blog.csdn.net/BlogPan/article/details/132396576?spm=1001.2014.3001.5502 |
1、配置IP地址
编辑 /etc/sysconfig/network-scripts/ifcfg-ens33 文件
修改配置:
BOOTPROTO=static #使用static配置 |
注意,配置静态ip地址的时候,需要去VMware工具中查看目前的网络配置。
点击VMnet8(NAT模式),将dhcp勾选关闭,然后点击【NAT配置】
记住这三个ip信息,在配置ifcfg-ens33文件的时候,网段和这三个信息ip对应,我的网段是192.168.231.x,也不准备改其他网段了,后续就按这个来配置。
修改完成之后,还需要去本地的网络配置中,修改VMnet8对应的配置。
将自动分配的方式,改为手动分配,配置时ip地址前三段和虚拟机配置保持一致192.168.231.x,确认本地可以识别到虚拟机对应的网段。这样不管本地连接的是什么网络,都会通过VMnet8转换为192.168.231.x网段,从而让虚拟机一直可以访问网络,并和本地相通,另外给VMnet8手动分配ip地址时,不要和虚拟机的ip重复了,我分配的是192.168.231.1。
2、修改hostname
修改每台节点/etc/hostname文件
覆盖写入为:
cm1 |
3、配置ip、host映射关系
在每台节点/etc/hosts文件后追加如下内容,配置ip与hostname之间的映射。
192.168.231.201 cm1 |
4、关闭防火墙
关闭每台节点的防火墙
#检查防火墙状态:centos6 : service iptables status |
5、关闭SELinux
SELinux就是Security-Enhanced Linux的简称,安全加强的linux。传统的linux权限是对文件和目录的owner, group和other的rwx进行控制,而SELinux采用的是委任式访问控制,也就是控制一个进程对具体文件系统上面的文件和目录的访问,SELinux规定了很多的规则,来决定哪个进程可以访问哪些文件和目录。虽然SELinux很好用,但是在多数情况我们还是将其关闭,因为在不了解其机制的情况下使用SELinux会导致软件安装或者应用部署失败。
在每台节点/etc/selinux/config中将SELINUX=enforcing改成SELINUX=disabled即可。
SELINUX=disabled |
6、节点间免密登录
用ssh访问其他节点,生成ssh文件
[root@cm1 ~]# ssh 192.168.231.202 需要输入密码 |
生成公钥和私钥
[root@cm1 ~]# ssh-keygen -t rsa //生成公钥和私钥 |
拷贝公钥到要免密登录的服务器上
# 这个操作会将cm1的公钥信息,拷贝到cm2节点的authorized_keys文件中 |
访问要免密登录的服务器
[root@cm1 ~]# ssh cm2 |
7、集群时钟同步
在每个节点上执行以下操作
[root@cm1 ~]# yum -y install ntp #安装ntp服务# |
8、安装jdk
参考地址:
https://blog.csdn.net/BlogPan/article/details/132384949 |
创建/software路径,将准备工作中下载的jdk安装包oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm放这个路径下
[root@cm1 ~]# mkdir -p /software |
执行安装
[root@cm1 ~]# rpm -ivh /software/oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm |
以上命令执行完成之后,会在节点的/usr/java下安装jdk。在每台机器都执行完命令之后,在每台节点配置jdk的环境变量:
[root@cm1 ~]# vi /etc/profile |
执行完成以上命令之后,在每台节点上执行 “. /etc/profile”使配置生效。
[root@cm1 ~]# . /etc/profile |
查看java的版本:
[root@cm1 ~]# java -version |
java版本查询结果如下图
9、主节点安装mysql数据库
参考地址:
https://blog.csdn.net/BlogPan/article/details/132393695 |
下载mysql安装包
# noarch表示该软件包不依赖特定Linux发行版 |
由于准备工作中已经下载好了,直接将mysql安装包放/software路径下
执行安装:
[root@cm1 ~]# rpm -ivh /software/mysql57-community-release-el7-9.noarch.rpm |
可能出现报错:提示Public key for mysql-community-common-5.7.44-1.el7.x86_64.rpm is not installed异常信息:
问题原因:MySQL秘钥过期导致
解决方案:导入新的秘钥信息,再重新执行安装语句
[root@cm1 ~]# rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 |
启动mysql:
[root@cm1 ~]# systemctl start mysqld |
查看mysql状态
[root@cm1 ~]# systemctl status mysqld |
查看mysql版本
[root@cm1 ~]# mysql -V |
mysql初始登录时需要使用初始密码,使用命令grep "password" /var/log/mysqld.log 获取临时密码后,执行如下语句:
[root@cm1 ~]# grep "password" /var/log/mysqld.log |
进入mysql,并设置mysql密码等级和长度:
[root@cm1 ~]# mysql -uroot -paIktPa-Js8aJ |
设置密码:
mysql> alter user 'root'@'localhost' identified by 'root'; |
将mysql设置为开机启动:
[root@cm1 ~]# systemctl enable mysqld |
查看设置是否成功:
[root@cm1 ~]# systemctl list-unit-files | grep mysqld |
以上设置的mysql密码安全等级和密码长度,在mysql重启后需要重复设置,这里可以修改mysql的配置文件/etc/my.cnf,让配置永久生效
[root@cm1 ~]# vi /etc/my.cnf |
10、主节点安装httpd服务与createrepo
#createrepo 是一个对rpm 文件进行索引建立的工具。大体功能就是对指定目录下的rpm文件进行检索,把每个rpm文件的信息存储到指定的索引文件中,这样方便远程yum命令在安装更新时进行检索。
# 安装httpd |
修改配置文件 /etc/httpd/conf/httpd.conf,在<IfModule mime_module>中添加支持.parcel文件类型,用于远程下载parcel文件。
[root@cm1 ~]# vi /etc/httpd/conf/httpd.conf |
11、配置web服务
在准备工作中,我们下载了cdh安装包。
我把安装包放在了/opt/app/cdh路径下,在安装完httpd服务后,直接将/opt/app/cdh目录移动到/var/www/html目录下
[root@cm1 ~]# mv /opt/app/cdh /var/www/html |
移动之后,看看对应的目录下有什么文件
[root@cm1 ~]# tree /var/www/html |
接下来我们就可以在网页上看到对应的文件了
访问:http://192.168.231.201/cdh/CM6.3.1/
可以看到下图所示内容
现在我们需要通过createrepo来创建CM6.3.1目录的repo
# 首先移动到/var/www/html/cdh/CM6.3.1目录下
[root@cm1 ~]# cd /var/www/html/cdh/CM6.3.1 |
# 然后执行createrepo命令
[root@cm1 CM6.3.1]# createrepo . |
# 然后去网页上去看是否有对应的repodata文件夹生成
访问:http://192.168.231.201/cdh/CM6.3.1/
# 然后制作本地repo源
在/etc/yum.repos.d目录下创建cm-local.repo配置文件,添加如下内容:
[root@cm1 chd]# cd /etc/yum.repos.d |
# 制作完成后,将cloudera.repo文件拷贝到其他节点的/etc/yum.repos.d目录下,或手动在其他节点都写入一个cloudera.repo文件。
# 在cm2和cm3机器上,执行以下语句 |
# 查看当前所有yum源
[root@cm1 ~]# yum repolist |
12、安装第三方依赖包
每个节点都执行一遍以下语句,cm1已经安装了httpd,再执行以下语句时会检测到,自动跳过,不用担心有影响。
[root@cm1 ~]# yum install -y chkconfig bind-utils psmisc cyrus-sasl-plain cyrus-sasl-gssapi portmap /lib/lsb/init-functions httpd mod_ssl openssl-devel python python-psycopg2 MySQL-python libxslt zlib sqlite fuse fuse-libs redhat-lsb |
Cloudera Manager安装:
1、创建安装目录:
在三台机器cm1、cm2、cm3上,都创建/opt/cloudera-manager目录
[root@cm1 ~]# mkdir /opt/cloudera-manager |
将ClouderaManager rpm安装包“cm6.3.1-redhat7.tar.gz”上传至cm1节点的目录“/software”下,并且解压到目录“/opt/cloudera-manager”下,在cm1节点执行命令如下:
[root@cm1 software]# tar -zxvf ./cm6.3.1-redhat7.tar.gz -C /opt/cloudera-manager/ |
2、rpm安装包分发:
将解压后的文件分发到其他Agent节点,所有的Agent节点都需要分发,只需要发送cloudera-manager-agent与cloudera-manager-daemons安装包即可。执行如下命令:
#将安装包分发到cm2节点 |
3、在CM server服务节点上安装CM server:
在cm1节点上安装daemons、servers RPM包,由于安装过程中会检查系统中的依赖包,如果没有会报错,可以安装时指定 --nodeps 不检查依赖关系,但建议在虚拟机准备工作中将第12步的依赖都安装好,执行时最好不要指定 --nodeps,看看缺了什么依赖包,根据提示再安装上就行。命令如下:
[root@cm1 ~]# cd /opt/cloudera-manager/cm6.3.1/RPMS/x86_64 |
以上命令执行完成之后,会自动创建目录“/opt/cloudera”,自动将RPM包安装到这个目录下。
4、在CM Agent节点上安装CM Agent:
在cm1,cm2,cm3节点上安装daemons、agent RPM包,这里由于已经第3步骤在cm1中已经安装过daemons,不必重复安装,只需要在cm1节点上安装agent RPM安装包即可。
#在cm1节点上安装agent 可以指定 --nodeps 不检查依赖 |
5、配置CM Agent的Server host:
在所有的Agent节点上,修改Agent的配置文件“/etc/cloudera-scm-agent/config.ini”,修改“server_host=cm1”,指定所有Agent节点的Server节点为cm1。
[root@cm1 ~]# vi /etc/cloudera-scm-agent/config.ini |
6、配置CM Server 数据库:
在cm1 Server节点上,修改“/etc/cloudera-scm-server/db.properties”文件,配置内容如下:
[root@cm1 ~]# vi /etc/cloudera-scm-server/db.properties |
将“mysql-connector-java-5.1.26-bin.jar”上传至cm1节点的/usr/share/java/目录下,如果没有目录需要先创建目录,并且修改jar包名称为“mysql-connector-java.jar”。
# 每台机器都操作一遍 |
登录mysql数据库,执行如下命令:
[root@cm1 ~]# mysql -u root -proot |
在CM Server节点cm1上执行如下命令初始化数据库:
[root@cm1 ~]# cd /opt/cloudera/cm/schema/ |
7、准备CDH Parcels本地源:
在Server节点cm1上“/opt/cloudera/parcel-repo”目录下,上传如下文件即可。
CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel |
8、启动CM Server、CM Agent:
在Server节点启动ClouderaManager Server,分别在Agent节点启动ClouderaManager Agent:
# 在cm1 节点上启动 Server 服务 |
注意:Server启动比较慢,需要等待一会才能访问对应的web界面,可以查看启动日志,Sever启动的日志默认在路径“/var/log/cloudera-scm-server/cloudera-scm-server.log”下。Agent启动的日志默认在路径“/var/log/cloudera-scm-agent/cloudera-scm-agent.log ”下。可以通过以上日志来检查启动中是否有错。
查看启动日志/var/log/cloudera-scm-server/cloudera-scm-server.log,无异常表示启动成功。
[root@cm1 ~]# tail -3 /var/log/cloudera-scm-server/cloudera-scm-server.log |
注意:在这里我报错了,报错信息如下,原因是访问不到虚拟机准备步骤中第11步网页中的manifest.json文件,目前第11步虽然搭建了,但repo文件只指明了CM6.3.1文件夹,而manifest.json文件在CDH6.3.2目录下,不过不要紧,因为我们在第7步的时候,往“/opt/cloudera/parcel-repo”目录下也导了一遍文件,所以这个报错可以不管:
ERROR ParcelUploadService com.cloudera.parcel.components.ParcelUploaderImpl : Unable to retrieve remote parcel repository manifest |
Sever首次启动会自动创建表以及数据,不要立即关闭或重启,否则需要删除所有表及数据重新安装。
至此,Cloudera Manager的安装完成。
CDH安装:
1、登录Cloudera Manager的webui页面
Cloudera Manager的webui界面登录地址为cm1:7180【注:是本机访问,如果本地电脑的hosts文件域名cm1未配置,那就用ip地址192.168.231.201,windows的hosts文件地址:C:\Windows\System32\drivers\etc\hosts】,默认的用户名和密码都是admin。输入完成后,点击登录。
2、选择安装CDH节点
登录之后,一直选择“继续”即可:
选择Cloudera Express,点击“继续”,弹出页面后继续点击“继续”:
弹出如下页面,该页面是为CDH指定主机,可以使用“模式”通配来选择主机,也可以选择“当前管理的主机”,这里“当前管理的主机”中有节点内容的原因正是由于之前我们在这三台节点配置过agent。如果未来集群增加机器,可以在新主机中搜索添加,后期会自动将agent安装到选中的新节点。
这里我们选择“当前管理的主机”中的所有节点,点击“继续”
3、集群安装
选择CDH版本为CDH6.3.2,点击“继续”,如下图:
点击“继续”之后,Cloudera Manager主节点会将下载好的CDH分发到各个Agent节点,这时可以在cm1,cm2,cm3节点上看到路径/opt/cloudera/parcel-cache目录中有Cloudera Manager主节点传过来的CDH安装包,同时在完成传输之后,每个Agent节点还会将CDH安装包解压到/opt/cloudera/parcels路径下,此时,界面显示如下:
点击“继续”,显示正在检查主机健康状况,稍等片刻,会显示检查结果:
点击检查结果,查看检查主机出现的问题:
这里建议swappiness=10的时候表示最大限度使用物理内存。由于透明超大页面已知会导致意外的节点重新启动,可以在每台节点中执行如下命令:
#在 cm1,cm2,cm3节点上执行如下命令 |
在集群执行完命令后,在检查主机正确性后面点击“重新运行”即可解决:
最后,点击“继续”,进入“集群设置”。
4、集群设置
在进入的集群设置界面中,点击“自定义服务”,选择“HDFS”、“YARN”、“Zookeeper”进行安装,注意:这里提示还会安装Cloudera Management Service ,用于后期的监控、报告、事件和警报。
以上点击“继续”,进入“角色分配”页面,显示的是Cloudera Manager自动划分的集群分配,当然这里也可以自己分配节点。如下图所示:
继续点击“继续”,进入“审核更改页面”,在这里可以手动修改一些配置文件,如下图所示:
继续点击“继续”,进入执行集群命令,启动各个组件页面,当所有组件启动完成之后,如下图示:
点击“继续”,完成集群设置。
5、CHD主界面
6、安装hive
1、选择集群,添加hive服务
2、添加服务向导
选择HDFS,点击“继续”:
选择默认角色配置即可:
点击“继续”之后,需要配置Hive依赖的mysql数据库,需要在cm1节点上连接mysql,执行创建数据库及分配权限语句:
[root@cm1 ~]# mysql -u root -proot |
在弹出的页面中选择数据库,填写用户名及密码,点击“测试连接”,测试数据库连接成功后,点击“继续”:
点击继续之后,设置hive的数据目录及端口,默认即可,点击继续之后等待Hive安装完成即可。
7、impala介绍和安装
1、impala简介
impala由Cloudera公司推出,提供对HDFS、Hbase数据的高性能、低延迟的交互式SQL查询功能。 基于Hive使用内存计算,兼顾数据仓库、具有实时、批处理、多并发等优点。是CDH平台首选的PB级大数据实时查询分析引擎。已有的Hive系统虽然也提供了SQL语义,但由于Hive底层执行使用的是MapReduce引擎,仍然是一个批处理过程,难以满足查询的交互性。相比之下,Impala的最大特点就是基于内存处理数据,查询速度快。
Impala与Hive都是构建在Hadoop之上的数据查询工具各有不同的侧重适应面,但从客户端使用来看Impala与Hive有很多的共同之处,如数据表元数据、ODBC/JDBC驱动、SQL语法、灵活的文件格式、存储资源池等。
Impala与Hive在Hadoop中的关系下图所示。Hive适合于长时间的批处理查询分析,而Impala适合于实时交互式SQL查询,Impala给数据分析人员提供了快速实验、验证想法的大数据分析工具。可以先使用hive进行数据转换处理,之后使用Impala在Hive处理后的结果数据集上进行快速的数据分析。
2、impala安装
1、选择集群,添加impala服务
2、添加服务向导
在弹出的窗口中选择impala,点击“继续”:
角色按照默认配置即可,点击“继续”:
选择impala的数据目录,默认即可,点击“继续”->“完成”,完成impala的安装: