Agent:安装在每台主机上。它负责启动和中止进程,解压缩配置,触发安装和监控主机 Management Service:执行各类监控、报警和报告功能的一组角色的服务。 Database:存储配置和监控信息 (元数据) Cloudera Repository:可供Cloudera Manager分配的软件的存储库 Client:用于与服务器进行交互的接口 Admin Console:管理员控制台 API:开发人员使用 API能够建立自定义的Cloudera Manager应用程序
CentOS 6.5基础环境准备html
VMWare中新建虚拟机,按步骤操做便可java
这里选择本身配置的虚拟机
- 复制三份,并将文件夹分别重命名为cdh001,cdh002,cdh003,cdh004,cdh005
- 双击.vmx文件,则在VmWare中打开,并根据相应文件夹重命名
- 在虚拟机中进行配置三台虚拟机的内存(任务管理器-性能-本机内存为8G),所以每台虚拟机内存分配不能超过2G。设置1G
- 分配最大可占用的磁盘空间,这里40G
- 配置ISO映像文件正确路径(CentOS 64)python
配置参数列表mysql
IP | 主机名 | 环境配置 | 安装 |
---|---|---|---|
192.168.64.151 | cdh001 | 关闭防火墙和SELinux,host映射,时钟同步 | JDK 等 |
192.168.64.152 | cdh002 | 关闭防火墙和SELinux,host映射,时钟同步 | JDK 等 |
192.168.64.153 | cdh003 | 关闭防火墙和SELinux,host映射,时钟同步 | JDK 等 |
192.168.64.154 | cdh004 | 关闭防火墙和SELinux,host映射,时钟同步 | JDK 等 |
192.168.64.155 | cdh005 | 关闭防火墙和SELinux,host映射,时钟同步 | JDK 等 |
主机名 | Server | Agent | MySQL |
---|---|---|---|
cdh001 | √ | ||
cdh002 | √ | ||
cdh003 | √ | ||
cdh004 | √ | ||
cdh005 | √ | √ |
主机名 | ZK | ResourceManager | JobHistory | NodeManager | Hive | Kafka | HBase(master 仅001) | Phoenix(SQL on HBase) | impala(Daemon全选,其它001) | KUDU(TS全选,MS001) | Oozle | Hue |
---|---|---|---|---|---|---|---|---|---|---|---|---|
cdh001 | √ | √ | √ | √ | √ | √ | √ | √ | √ | |||
cdh002 | √ | √ | √ | √ | √ | √ | ||||||
cdh003 | √ | √ | √ | √ | √ | √ | √ | |||||
cdh004 | √ | √ | √ | √ | √ | √ | √ | |||||
cdh005 | √ | √ | √ | √ | √ | √ | √ | √ | √ |
将相应包上传到相应节点的~目录下 # 安装传输工具 yum -y install lrzsz # SecureCRT View-Command Window,后右击,选择 send command to all sessions # 下载路径 https://archive.cloudera.com/cdh6/6.2.1/parcels/ https://archive.cloudera.com/cm6/6.2.1/redhat7/yum/RPMS/x86_64/ https://archive.cloudera.com/phoenix/6.2.0/parcels/ https://archive.cloudera.com/phoenix/6.2.0/csd/ # cdh001 CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha1 cloudera-manager-agent-6.2.1-1426065.el7.x86_64.rpm cloudera-manager-daemons-6.2.1-1426065.el7.x86_64.rpm cloudera-manager-server-6.2.1-1426065.el7.x86_64.rpm jdk-8u202-linux-x64.tar.gz manifest.json mysql-connector-java-5.1.40.jar PHOENIX-1.0.jar PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel.sha PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel # cdh002-004 cloudera-manager-agent-6.2.1-1426065.el7.x86_64.rpm cloudera-manager-daemons-6.2.1-1426065.el7.x86_64.rpm cloudera-manager-server-6.2.1-1426065.el7.x86_64.rpm jdk-8u202-linux-x64.tar.gz mysql-connector-java-5.1.40.jar # cdh005 cloudera-manager-agent-6.2.1-1426065.el7.x86_64.rpm cloudera-manager-daemons-6.2.1-1426065.el7.x86_64.rpm cloudera-manager-server-6.2.1-1426065.el7.x86_64.rpm jdk-8u202-linux-x64.tar.gz mysql-connector-java-5.1.40.jar mysql-community-client-5.7.31-1.el7.x86_64.rpm mysql-community-common-5.7.31-1.el7.x86_64.rpm mysql-community-devel-5.7.31-1.el7.x86_64.rpm mysql-community-libs-5.7.31-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.31-1.el7.x86_64.rpm mysql-community-server-5.7.31-1.el7.x86_64.rpm
网络上解决步骤各异,其实就一句话。 只要保证vm virtual machine的.vmx配置文件、ifconfig –a、/etc/sysconfig/network-scripts/ifcfg-eth0、/etc/udev/rules.d/70-persistent-net.rules, 所使用的网卡设备和MAC地址一致便可。
# 打开三台虚拟机设置,查看 MAC 地址(若相同,则要生成新的) cdh001 00:50:56:20:4D:DB cdh002 00:50:56:21:A4:77 cdh003 00:50:56:33:50:65 cdh003 00:50:56:30:82:D0 cdh003 00:50:56:39:A8:83
# 执行 ONBOOT改成yes:启动时会激活网卡 BOOTROTO设置为static,表示静态IP cd /etc/sysconfig/network-script vi /etc/sysconfig/network-scripts/ifcfg-ens33 # 输入 **reboot 重启**三台主机 # 输入 ifconfig,查看ip是否正确 # 安装 ifconfig yum search ifconfig yum install net-tools.x86_64 # 输入 ping www.baidu.com 查看可否正确联网,CTRL+C结束终止进程 # vim 安装 yum -y install vim*
# 执行修改主机名 hostnamectl set-hostname cdh003 # 打开添加域名映射 vim /etc/hosts 192.168.64.151 cdh001 192.168.64.152 cdh002 192.168.64.153 cdh003 192.168.64.154 cdh004 192.168.64.155 cdh005
# 复制虚拟机并重复上一步骤,每台联网 # 执行关闭命令 systemctl stop firewalld.service # 执行开机禁用防火墙自启命令 systemctl disable firewalld.service
SELinux 是Linux的一种安全子系统(三种工做模式)
- 强制模式:违反规则,则制止,并记录到日志文件
- 宽容模式:违反规则,不制止,记录到日志文件
- 关闭linux
# 修改selinux的配置文件 vi /etc/selinux/config # 将其中的模式改成: SELINUX=disabled
为何要免密登陆
Hadoop 节点众多, 因此通常在主节点启动从节点, 这个时候就须要程序自动在主节点登陆到从节点中, 若是不能免密就每次都要输入密码, 很是麻烦git
第一步:在三台机器执行如下命令,生成公钥与私钥(按enter 3次)web
ssh-keygen -t rsa
三台机器将拷贝公钥到第一台机器,三台机器执行命令: ssh-copy-id cdh001
在第一台机器上面执行如下命令 scp /root/.ssh/authorized_keys cdh002:/root/.ssh scp /root/.ssh/authorized_keys cdh003:/root/.ssh scp /root/.ssh/authorized_keys cdh004:/root/.ssh scp /root/.ssh/authorized_keys cdh005:/root/.ssh
# 安装 yum -y install gcc python-devel cyrus-sasl* chrony iotop yum-utils yum-plugin-downloadonly psmisc ntp ntpdate httpd createrepo wget git rsync mod_ssl cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-gssapi libxslt krb5-devel cyrus-sasl-gssapi cyrus-sasl-devel libxml2-devel libxslt-devel openldap-devel python-devel python-simplejson sqlite-devel # 卸载 yum -y remove mariadb-libs # 时钟同步 systemctl start ntpd systemctl enable ntpd
sysctl vm.swappiness=10 echo 'vm.swappiness=10'>> /etc/sysctl.conf echo never > /sys/kernel/mm/transparent_hugepage/defrag echo never > /sys/kernel/mm/transparent_hugepage/enabled echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.local echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local
# 建立安装目录 mkdir /usr/java # 输入以下指令到全部节点执行 tar -zxf jdk-8u202-linux-x64.tar.gz -C /usr/java/ cat << EOF >> /etc/profile export JAVA_HOME=/usr/java/jdk1.8.0_202 export PATH=\$PATH:\$JAVA_HOME/bin EOF source /etc/profile jps # 检验安装版本 java -version
# 下载这6个MySQL的rpm包 mysql-community-client-5.7.31-1.el7.x86_64.rpm mysql-community-common-5.7.31-1.el7.x86_64.rpm mysql-community-devel-5.7.31-1.el7.x86_64.rpm mysql-community-libs-5.7.31-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.31-1.el7.x86_64.rpm mysql-community-server-5.7.31-1.el7.x86_64.rpm # 在cdh005上执行运行(不清楚安装包间是否相互依赖,尽可能按所给顺序依次) yum -y localinstall mysql-community-common-5.7.31-1.el7.x86_64.rpm yum -y localinstall mysql-community-libs-5.7.31-1.el7.x86_64.rpm yum -y localinstall mysql-community-libs-compat-5.7.31-1.el7.x86_64.rpm yum -y localinstall mysql-community-devel-5.7.31-1.el7.x86_64.rpm yum -y localinstall mysql-community-client-5.7.31-1.el7.x86_64.rpm yum -y localinstall mysql-community-server-5.7.31-1.el7.x86_64.rpm # 启动 systemctl start mysqld # 开机自启动 systemctl enable mysqld # 查看临时密码 cat /var/log/mysqld.log | grep password # 临时密码填充到引号内,执行 mysql -uroot -p'ly0h!Gw4PyBk' # 取消mysql密码规范限制 set global validate_password_policy=0; set global validate_password_length=1; # 首次登陆设置密码 set password=password('123456'); # 退出 quit; # 登录设置容许外网访问当前的MySQL mysql -uroot -p'123456' use mysql; update user set host='%' where host='localhost'; delete from user where host != '%'; flush privileges; # 退出 quit; # 建立ClouderaManager须要用到的几个数据库 # 登入 mysql -uroot -p'123456' # 建立库 create database cmf default character set = 'utf8'; create database amon default character set = 'utf8'; create database hive default character set = 'latin1'; create database hue default character set = 'utf8'; create database oozie default character set = 'utf8'; quit; # 全部节点执行 mv mysql-connector-java-5.1.40.jar mysql-connector-java.jar mkdir /usr/share/java mv mysql-connector-java.jar /usr/share/java/
# 软件包 cloudera-manager-agent-6.2.1-1426065.el7.x86_64.rpm cloudera-manager-daemons-6.2.1-1426065.el7.x86_64.rpm cloudera-manager-server-6.2.1-1426065.el7.x86_64.rpm # 所有节点安装 daemons 和 agent(安装最好逐条输入,防止宕机) yum -y localinstall cloudera-manager-daemons-6.2.1-1426065.el7.x86_64.rpm yum -y localinstall cloudera-manager-agent-6.2.1-1426065.el7.x86_64.rpm # cdh001 上安装 server yum -y localinstall cloudera-manager-server-6.2.1-1426065.el7.x86_64.rpm # 至此,CM服务安装完毕
# 移动CDH安装包至 /opt/cloudera/parcel-repo/ 目录 mv CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel* /opt/cloudera/parcel-repo/ # 移动PHOENIX‐1.0.jar 至 /opt/cloudera/parcel-repo/ 目录 mv PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel* /opt/cloudera/parcel-repo/ # 移动 manifest.json 至 /opt/cloudera/parcel-repo/ 目录 mv manifest.json /opt/cloudera/parcel-repo/ # 移动 PHOENIX-1.0.jar 至 /opt/cloudera/csd/ 目录 mv PHOENIX-1.0.jar /opt/cloudera/csd/ # 检验 CDH parcel 包是否完整(parcel包在传输过程当中因网络可能缺失) sha1sum CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel cat CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha1 # 上面两条命令获得的值必须同样 # sha1确认后改成sha mv CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha1 CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha # 校验 PHOENIX sha 包是否完整 sha1sum PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel cat PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel.sha
# cdh001上修改server vi /etc/cloudera-scm-server/db.properties # 显示行号 : set nu # 12行去掉注释把localhost改为cdh005 # 15行去掉注释 # 18行去掉注释,把cmf改为root # 21行去掉注释,密码那里填写123456 # 28行,INIT改成 EXTERNAL
# 所有节点修改agent vi /etc/cloudera-scm-agent/config.ini # 15行把localhost修改成cdh001
# 在cdh001上启动server systemctl start cloudera-scm-server # 另开一个窗口,查看相关日志。有异常就解决异常 tail -200f /var/log/cloudera-scm-server/cloudera-scm-server.log # 下面这个异常能够忽略 ERROR ParcelUpdateService:com.cloudera.parcel.components.ParcelDownloaderImpl: Unable to retrieve remote parcel repository manifest # 在所有节点上启动agent systemctl start cloudera-scm-agent # 当在 cdh001上 netstat -tunlp | grep 7180 有内容时,说明咱们能够访问web页面 # 若域名映射失败,打开本地hosts文件,添加映射 C:\Windows\System32\drivers\etc\hosts # 浏览器输入 cdh001:7180,按照步骤进行安装。
# 广义上来讲,Hadoop一般是指一个更普遍的概念——Hadoop生态圈 # 狭义上来讲,Hadoop是指Apache这款开源框架,它的核心组件有: - HDFS(分布式文件系统):解决海量数据存储 - YARN (做业调度和集群资源管理的框架):解决资源任务调度 - MAPREDUCE(分布式运算编程框架):解决海量数据计算
Zookeeper入门看这篇
sql
它是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中常常遇到的一些数据管理问题. 如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。
Yarn 详解shell
资源管理、任务调度的框架,主要包含三大模块: - ResourceManager(RM):负责全部资源的监控、分配和管理 - ApplicationMaster(AM):负责每个具体应用程序的调度和协调 - NodeManager(NM):负责每个节点的维护
Hive 高级应用数据库
是基于Hadoop的一个数据仓库工具,能够将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能
使用Scala语言编写,是一个分布式,分区的,多副本,多订阅者的消息队列系统。
当您须要对大数据进行随机,实时的读/写访问时。 Hbase是一种分布式存储的数据库,技术上来说,它更像是分布式存储而不是分布式数据库,它缺乏不少RDBMS系统的特性,好比列类型,辅助索引,触发器,和高级查询语言等待。
Phoenix是一个开源的HBASE SQL层。它不只可使用标准的JDBC API替代HBASE client API建立表,插入和查询HBASE,也支持二级索引、事物以及多种SQL层优化。
Impala 是参照google 的新三篇论文Dremel(大批量数据查询工具)的开源实现,功能相似shark(依赖于hive)和Drill(apache),impala 是clouder 公司主导开发并开源,基于 hive并使用内存进行计算,兼顾数据仓库,具备实时,批处理,多并发等优势。是使用cdh 的首选PB 级大数据实时查询分析引擎。(也能够单独安装使用,但通常都是和CDH一块儿使用;)
简单来讲:kudu是一个与hbase相似的列式存储分布式数据库。 官方给kudu的定位是:在更新更及时的基础上实现更快的数据分析
- Oozie是大数据四大协做框架之一——任务调度框架,另外三个分别为数据转换工具Sqoop,文件收集库框架Flume,大数据WEB工具Hue。 - 它可以提供对Hadoop MapReduce和Pig Jobs的任务调度与协调。 - Oozie须要部署到Java Servlet容器中运行。 - 功能类似的任务调度框架还有Azkaban和Zeus。
是cdh专门的一套web管理器,它包括3个部分hue ui,hue server,hue db。hue提供全部的cdh组件的shell界面的接口。 你能够在hue编写mr,查看修改hdfs的文件,管理hive的元数据,运行Sqoop,编写Oozie工做流等大量工做。
# 测试语句 create table if not exists t1(id int,name string,score double) row format delimited fields terminated by ',' stored as parquet; select count(*) from t1; # 执行 按 Ctrl+enter
# 按左侧刷新 # 执行测试语句 create table t2 ( name string, dt string, primary key(name,dt) ) partition by hash partitions 16 stored as kudu tblproperties ( 'kudu.master_addresses' = 'cdh001:7051' ); # 插入数据 insert into t2 values('zhangsan','2020‐05‐06'); # 查询 select count(*) from t2; select * from t2;
# phoenix 在linux上操做,选一台机器,输入 phoenix-sqlline # 执行建表 create table if not exists t1( id Integer, name varchar, clazz varchar, score double constraint pk primary key(id) ); # !tables 显示全部表 # 插入数据 upsert into t1 values(1001,'zhangsan','606',87.5); # 退出 !quit
yum clean all yum makecache
更改ISO为centOS7
安装失败。 没法接收 Agent 发出的检测信号。 请确保主机的名称已正确配置。 请确保端口 7182 可在 Cloudera Manager Server 上访问(检查防火墙规则)。 请确保正在添加的主机上的端口 9000 和 9001 空闲。 检查正在添加的主机上 /var/log/cloudera-scm-agent/ 中的代理日志(某些日志可在安装详细信息中找到)。 若是在 Cloudera Manager 中启用为代理使用 TLS 加密(管理 -> 设置 -> 安全),请确保 /etc/cloudera-scm-agent/config.ini在正在添加的主机上有 use_tls=1。重启相应的代理,并单击此处的重试连接。 解决:网上说是 由于开启了Auto-TLS致使了没法接收 Agent 发出的检测信号,重装时不开启Auto-TLS 本人折腾许久,换了个安装视频重装
此篇必有成功后续(在我进公司,有云服务器后),步骤没有错。
# 数据量很大,须要流处理的 - 能够考虑 impala+kudu ,将数据存在kudu上,用impala创建,对kudu进行数据分析 - HBase 作存储,HIVE对其进行分析 或者 phoenix 对其进行分析 # 传统数仓项目(主要是离线数据分析) - Hive 作查询,HDFS上以 Parquet 格式存储,HIVE进行数据的插入更新,在YARN上进行操做。 - impala用Hive的源数据对HDFS上的数据进行分析
搭建过程来源于B站视频,十分感谢UP主的分享!!!