1 基本介绍
1.1 概述
Hadoop的发行版本有很多,有华为发行版,Intel发行版,Cloudera发行版(CDH),MapR版本,以及HortonWorks版本等。所有发行版都是基于Apache Hadoop衍生出来的,产生这些版本的原因,是由于Apache Hadoop的开源协议决定的:任何人可以对其进行修改,并作为开源或商业产品发布和销售。
收费版本:
收费版本一般都会由新的特性。国内绝大多数公司发行的版本都是收费的,例如Intel发行版本,华为发行版本等。
免费版本:
不收费的版本主要有三个(都是国外厂商)。
Cloudera版本(Cloudera's Distribution Including Apache Hadoop)简称"CDH"。
Apache基金会hadoop
Hontonworks版本(Hortonworks Data Platform)简称"HDP"。
按照顺序代表了国内的使用率,CDH和HDP虽然是收费版本,但是他们是开源的,只是收取服务费用,严格上讲不属于收费版本。
Cloudera版本(Cloudera's Distribution Including Apache Hadoop,简称"CDH"),简单来说,Cloudera Manager是一个拥有集群自动化安装、中心化管理、集群监控、报警功能的一个工具(软件),使得安装集群从几天的时间缩短在几个小时内,运维人员从数十人降低到几人以内,极大的提高集群管理的效率。基于Web的用户界面,支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeeper、Sqoop,简化了大数据平台的安装、使用难度。
Cloudera Manager可以轻松管理任何生产规模的Hadoop部署。通过直观的用户界面快速部署,配置和监控群集 - 完成滚动升级,备份和灾难恢复以及可定制警报。
企业大数据平台的建设和运营无疑是重中之重,这也正成为企业信息化建设的核心任务和目标。通过构建企业大数据平台,对企业大规模数据进行科学高效的管理、分析、挖掘、监控、可视化,为公司内部产品的策划、运营、营销、财务、决策等提供科学精确的数据支撑,提高企业运营效率、最大化释放数据价值。
1.2 Cloudera Manager 的功能
cloudera manager有四大功能:
• 管理:对集群进行管理,如添加、删除节点等操作。
• 监控:监控集群的健康情况,对设置的各种指标和系统运行情况进行全面监控。
• 诊断:对集群出现的问题进行诊断,对出现的问题给出建议解决方案。
• 集成:多组件进行整合。
1.3 架构
cloudera manager的核心是管理服务器,该服务器承载管理控制台的Web服务器和应用程序逻辑,并负责安装软件,配置,启动和停止服务,以及管理上的服务运行群集。
Cloudera Manager Server由以下几个部分组成:
• Agent:安装在每台主机上。该代理负责启动和停止的过程,拆包配置,触发装置和监控主机。
• Management Service:由一组执行各种监控,警报和报告功能角色的服务。
• Database:存储配置和监视信息。通常情况下,多个逻辑数据库在一个或多个数据库服务器上运行。例如,Cloudera的管理服务器和监控角色使用不同的逻辑数据库。
• Cloudera Repository:软件由Cloudera 管理分布存储库。
• Clients:是用于与服务器进行交互的接口:
• Admin Console :基于Web的用户界面与管理员管理集群和Cloudera管理。
• API :与开发人员创建自定义的Cloudera Manager应用程序的API。
1.4 Cloudera Manager(CDH5)内部结构、功能包括配置文件、目录位置等
1.4.1 相关目录
/var/log/cloudera-scm-installer : 安装日志目录。 /var/log/* : 相关日志文件(相关服务的及CM的)。 /usr/share/cmf/ : 程序安装目录。 /usr/lib64/cmf/ : Agent程序代码。 /var/lib/cloudera-scm-server-db/data : 内嵌数据库目录。 /usr/bin/postgres : 内嵌数据库程序。 /etc/cloudera-scm-agent/ : agent的配置目录。 /etc/cloudera-scm-server/ : server的配置目录。 /opt/cloudera/parcels/ : Hadoop相关服务安装目录。 /opt/cloudera/parcel-repo/ : 下载的服务软件包数据,数据格式为parcels。 /opt/cloudera/parcel-cache/ : 下载的服务软件包缓存数据。 /etc/hadoop/* : 客户端配置文件目录。
1.4.2 官网文档
Cloudera Product Documentation
2 安装部署
2.1 主机规划
注意:Journalnode和ZooKeeper保持奇数个,最少不少于 3 个节点
无论是Hadoop相关组件还是cm本身都需要使用到数据库,cm默认会使用内嵌数据库,但是这种方式并不推荐在生产环节使用
2.2 基础环境部署
2.2.1 网络配置(所有节点)
新增用户ptxbd
#新增用户ptxbd useradd ptxbd uasswd ptxbd ptxbd ALL=(ALL) NOPASSWD:ALL ptxbd ALL=(ALL) NOPASSWD:/bin/whoami
#第一台服务器上执行 echo "172.31.xxx.xxx ptx-bigdata1" >> /etc/hosts echo "172.31.xxx.xxx ptx-bigdata2" >> /etc/hosts echo "172.31.xxx.xxx ptx-bigdata3" >> /etc/hosts echo "172.31.xxx.xxx ptx-bigdata4" >> /etc/hosts echo "172.31.xxx.xxx ptx-bigdata5" >> /etc/hosts #因为所有主机的 hosts 文件都一致,为了减少重复工作使用,scp 命令拷贝到所有主机 scp /etc/hosts root@192.168.159.10:/etc/ #设置hostname #分别进入集群中的每个主机,设置 hostname,需要注意的是 hostname 最好不好设置为大写,因为后续如果要开启 kerberos 的时候会报错! hostnamectl set-hostname ptx-bigdata1 hostnamectl set-hostname ptx-bigdata2 hostnamectl set-hostname ptx-bigdata3 hostnamectl set-hostname ptx-bigdata4 hostnamectl set-hostname ptx-bigdata5 #在每台主机上输入 hostname 看输出的结果是否与主机相对应 Hostname #重启服务器
2.2.2 SSH免密码登陆
#执行ssh-keygen -t rsa,三次Enter键[ptxbd@ptx-bigdata1 ~]$ ssh-keygen -t rsa[ptxbd@ptx-bigdata1 .ssh]$ ll-rw-------. 1 ptxbd ptxbd 1679 Feb 26 04:18 id_rsa-rw-r--r--. 1 ptxbd ptxbd 400 Feb 26 04:18 id_rsa.pub-rw-r--r--. 1 ptxbd ptxbd 358 Feb 26 03:24 known_hosts#拷贝公钥id_rsa.pub到其他节点ssh-copy-id ptx-bigdata2#验证ssh ptx-bigdata2
2.2.3 关闭防火墙和清空规则
#查看防火墙状态,注:active是绿的running表示防火墙开启 systemctl status firewalld.service #关闭防火墙 systemctl stop firewalld.service #开机禁用防火墙自启命令 systemctl disable firewalld.service #启动防火墙 systemctl start firewalld.service #防火墙随系统开启启动 systemctl enable firewalld.service #重启防火墙 firewall-cmd –reload #清空防火墙规则 sudo iptables -F
2.2.4 关闭所有节点SELINUX
vi /etc/selinux/config将 SELINUX=enforcing 改为 SELINUX=disabled[ptxbd@ptx-bigdata1 ~]$ sudo vi /etc/selinux/config
2.2.5 安装JDK
JDK 最好安装 1.8 的,因为 CDH6.0 以后 JDK 版本最低为 1.8
1)卸载openjdk
检查是否已经安装了jdk, java -verison
rpm -qa|grep javarpm –e --nodeps xxxxxxxxx
(说明:qa:查询所有安装包 -e: 卸载 -nodeps:忽略依赖)
2)上传jdk安装包
#安装文件上传下载工具[ptxbd@ptx-bigdata1 ~]$ sudo yum -y install lrzsz#创建cdh6.2.0文件夹,安装包存放位置[ptxbd@ptx-bigdata1 ~]$ mkdir cdh6.2.0#查看上传的相关安装包[ptxbd@ptx-bigdata1 cdh6.2.0]$ llCDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcelCDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel.shacloudera-manager-agent-6.2.0-968826.el7.x86_64.rpmcloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpmcloudera-manager-server-6.2.0-968826.el7.x86_64.rpmjdk-8u211-linux-x64.tar.gzmanifest.jsonmysql-5.7.11-linux-glibc2.5-x86_64.tar.gzmysql-connector-java-5.1.47.tar.gz#分发JDK到其他服务器上[ptxbd@ptx-bigdata1 cdh6.2.0]$ scp jdk-8u211-linux-x64.tar.gz ptxbd@ptx-bigdata2:/opt/software/cdh6.2.0/[ptxbd@ptx-bigdata1 cdh6.2.0]$ scp jdk-8u211-linux-x64.tar.gz ptxbd@ptx-bigdata3:/opt/software/cdh6.2.0/[ptxbd@ptx-bigdata1 cdh6.2.0]$ scp jdk-8u211-linux-x64.tar.gz ptxbd@ptx-bigdata4:/opt/software/cdh6.2.0/[ptxbd@ptx-bigdata1 cdh6.2.0]$ scp jdk-8u211-linux-x64.tar.gz ptxbd@ptx-bigdata5:/opt/software/cdh6.2.0/
3)解压安装包
#每个节点都创建/usr/java目录 sudo mkdir /usr/java/ #解压到每个节点/usr/java/目录下 sudo tar -zxvf jdk-8u211-linux-x64.tar.gz -C /usr/java/ #必须修正所属用户及用户组 sudo chown -R root:root /usr/java/jdk1.8.0_211 drwxr-xr-x 7 root root 4096 Apr 2 jdk1.8.0_211
*****提示:切记必须修正JDK所属用户及用户组chown -R root:root /usr/java/jdk1.8.0_211
4)配置环境变量/etc/profile
sudo vi /etc/profile #Java配置 export JAVA_HOME=/usr/java/jdk1.8.0_211export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=$JAVA_HOME/bin:$PATH
5)刷新配置(重新加载)
source /etc/profile
6)检查是否安装成功
java -version which java
2.2.6 设置NTP(timedatectl)
主从 主和互联网同步时间,从节点与主节点同步
主主 每一台都和互联网同步时间
公司内部时钟服务器
1、环境准备
1)timedatectl查看时间各种状态:
[ptxbd@ptx-bigdata2 etc]$ timedatectlLocal time: Thu -03-12 13:00:55 UTCUniversal time: Thu -03-12 13:00:55 UTCRTC time: Thu -03-12 13:00:45Time zone: UTC (UTC, +0000)NTP enabled: yesNTP synchronized: yesRTC in local TZ: noDST active: n/a
2)timedatectl list-timezones: 列出所有时区
3)timedatectl set-local-rtc 1将硬件时钟调整为与本地时钟一致, 0 为设置为 UTC 时间
4)timedatectl set-timezone Asia/Shanghai设置系统时区为上海
[ptxbd@ptx-bigdata2 ~]$ sudo timedatectl set-timezone Asia/Shanghai[ptxbd@ptx-bigdata2 ~]$ timedatectlLocal time: Thu -03-12 21:06:37 CSTUniversal time: Thu -03-12 13:06:37 UTCRTC time: Thu -03-12 13:06:28Time zone: Asia/Shanghai (CST, +0800)NTP enabled: yesNTP synchronized: yesRTC in local TZ: noDST active: n/a
2.所有节点都需要安装 ntp,如果没有 ntp 先安装 ntp,一般集群无法连接外网,可以先完成配置本地源的操作
yum install -y ntp
3.在 cdh01修改 ntp.conf 输入 vi /etc/ntp.conf ,注释其他时间服务器,添加为本机
sudo vi /etc/ntp.conf #添加内容 server 127.127.1.0 fudge 127.127.1.0 stratum8
4.在其他节点(ptx-bigdata[2-5])修改ntp.conf文件 输入vi /etc/ntp.conf在26行添加server ptx-bigdata1 iburst,注释其他时间服务器
sudo vi /etc/ntp.conf
5.在所有节点启动 ntp 服务
sudo systemctl start ntpd sudo systemctl enable ntpd
6.验证是否成功设置开机自启动
sudo systemctl list-unit-files |grep enabled | grep ntpd
2.2.7 MySQL离线配置
MySql 版本选择、摘自官网:
参考:GitHub - Hackeruncle/MySQL: MySQL Product Maintenance
1.解压及创建目录
#解压到/usr/local/文件夹 sudo tar -zxvf mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz -C /usr/local/ #修改文件夹名称 sudo mv mysql-5.7.11-linux-glibc2.5-x86_64 mysql #创建文件夹 sudo mkdir mysql/arch mysql/data mysql/tmp
2.创建f(见文件)
[ptxbd@ptx-bigdata1 local]# sudo vi /etc/f[client]port = 3306socket= /usr/local/mysql/data/mysql.sockdefault-character-set=utf8mb4[mysqld]port = 3306socket= /usr/local/mysql/data/mysql.sockskip-slave-startskip-external-lockingkey_buffer_size = 256Msort_buffer_size = 2Mread_buffer_size = 2Mread_rnd_buffer_size = 4Mquery_cache_size= 32Mmax_allowed_packet = 16Mmyisam_sort_buffer_size=128Mtmp_table_size=32Mtable_open_cache = 512thread_cache_size = 8wait_timeout = 86400interactive_timeout = 86400max_connections = 600# Try number of CPU's*2 for thread_concurrency#thread_concurrency = 32#isolation level and default enginedefault-storage-engine = INNODBtransaction-isolation = READ-COMMITTEDserver-id = 1739basedir= /usr/local/mysqldatadir= /usr/local/mysql/datapid-file= /usr/local/mysql/data/hostname.pid#open performance schemalog-warningssysdate-is-nowbinlog_format = ROWlog_bin_trust_function_creators=1log-error = /usr/local/mysql/data/hostname.errlog-bin = /usr/local/mysql/arch/mysql-binexpire_logs_days = 7innodb_write_io_threads=16relay-log = /usr/local/mysql/relay_log/relay-logrelay-log-index = /usr/local/mysql/relay_log/relay-log.indexrelay_log_info_file= /usr/local/mysql/relay_log/relay-log.infolog_slave_updates=1gtid_mode=OFFenforce_gtid_consistency=OFF# slaveslave-parallel-type=LOGICAL_CLOCKslave-parallel-workers=4master_info_repository=TABLErelay_log_info_repository=TABLErelay_log_recovery=ON#other logs#general_log =1#general_log_file = /usr/local/mysql/data/general_log.err#slow_query_log=1#slow_query_log_file=/usr/local/mysql/data/slow_log.err#for replication slavesync_binlog = 500#for innodb optionsinnodb_data_home_dir = /usr/local/mysql/data/innodb_data_file_path = ibdata1:1G;ibdata2:1G:autoextendinnodb_log_group_home_dir = /usr/local/mysql/archinnodb_log_files_in_group = 4innodb_log_file_size = 1Ginnodb_log_buffer_size = 200M#根据生产需要,调整pool sizeinnodb_buffer_pool_size = 2G#innodb_additional_mem_pool_size = 50M #deprecated in 5.6tmpdir = /usr/local/mysql/tmpinnodb_lock_wait_timeout = 1000#innodb_thread_concurrency = 0innodb_flush_log_at_trx_commit = 2innodb_locks_unsafe_for_binlog=1#innodb io features: add for mysql5.5.8performance_schemainnodb_read_io_threads=4innodb-write-io-threads=4innodb-io-capacity=200#purge threads change default(0) to 1 for purgeinnodb_purge_threads=1innodb_use_native_aio=on#case-sensitive file names and separate tablespaceinnodb_file_per_table = 1lower_case_table_names=1[mysqldump]quickmax_allowed_packet = 128M[mysql]no-auto-rehashdefault-character-set=utf8mb4[mysqlhotcopy]interactive-timeout[myisamchk]key_buffer_size = 256Msort_buffer_size = 256Mread_buffer = 2Mwrite_buffer = 2M
3.创建用户组及用户
[ptxbd@ptx-bigdata1 local]$ sudo groupadd -g 101 dba[ptxbd@ptx-bigdata1 local]$ sudo useradd -u 514 -g dba -G root -d /usr/local/mysql mysqladmin## 一般不需要设置mysqladmin的密码,直接从root或者LDAP用户sudo切换 #[root@hadoop39 local]# passwd mysqladmin
4.copy 环境变量配置文件至mysqladmin用户的home目录中,为了以下步骤配置个人环境变量(###important)
sudo cp /etc/skel/.* /usr/local/mysql
[caimh@cdh01 local]$ sudo cp /etc/skel/.* /usr/local/mysql
5.配置环境变量
sudo vi mysql/.bashrc export MYSQL_BASE=/usr/local/mysql export PATH=${MYSQL_BASE}/bin:$PATH
6.赋权限和用户组,切换用户mysqladmin,安装
[ptxbd@ptx-bigdata1 local]$ sudo chown mysqladmin:dba /etc/f[ptxbd@ptx-bigdata1 local]$ sudo chmod 640 /etc/f[ptxbd@ptx-bigdata1 local]$ sudo chown -R mysqladmin:dba /usr/local/mysql[ptxbd@ptx-bigdata1 local]$ sudo chmod -R 755 /usr/local/mysql
7.配置服务及开机自启动
cd /usr/local/mysql/ #将服务文件拷贝到init.d下,并重命名为mysql sudo cp support-files/mysql.server /etc/rc.d/init.d/mysql #赋予可执行权限 sudo chmod +x /etc/rc.d/init.d/mysql #删除服务 sudo chkconfig --del mysql #添加服务 sudo chkconfig --add mysql
8.安装libaio及安装mysql的初始db
[ptxbd@ptx-bigdata1 mysql]$ sudo yum -y install libaio[ptxbd@ptx-bigdata1 mysql]$ sudo su - mysqladmin[mysqladmin@ptx-bigdata1 ~]$ bin/mysqld \--defaults-file=/etc/f \--user=mysqladmin \--basedir=/usr/local/mysql/ \--datadir=/usr/local/mysql/data/ \--initialize
在初始化时如果加上 –initial-insecure,则会创建空密码的 root@localhost 账号,否则会创建带密码的 root@localhost 账号,密码直接写在 log-error 日志文件中
问题(可能多操作了几次)
解决方案:
通过/etc/my.conf找到datadir目录(/usr/local/mysql/data)
备份数据
Mv data data.bak
Rm –r data
Mkdir data
重新执行上面的命令
9.查看临时密码
[mysqladmin@ptx-bigdata1 data]$ pwd/usr/local/mysql/data[mysqladmin@ptx-bigdata1 data]$ cat hostname.err |grep password-02-24T14:46:47.691389Z 1 [Note] A temporary password is generated for root@localhost: 2ggfs0&%oczJ
10.登录及修改用户密码
[mysqladmin@ptx-bigdata1 data]$ service mysql startStarting MySQL.. SUCCESS!#修改密码[mysqladmin@ptx-bigdata1 data]$ mysql -uroot -pmysql> alter user root@localhost identified by 'cmh123';mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'cmh123';mysql> flush privileges;#重新启动[mysqladmin@ptx-bigdata1 data]$ service mysql restart
2.2.8 配置元数据库+用户+JDBC包
1.创建CDH元数据库 用户和amon的服务的库 用户
需要建的库有scm、amon、rman、hue、metastore、sentry、nav、navms、oozie
[ptxbd@ptx-bigdata1 mysql]$ sudo su - mysqladmin[mysqladmin@cdh01 ~]$ mysql -uroot -pcmh123#CM元数据库create database cmf default character set utf8;grant all privileges on cmf.* to 'cmf'@'%' identified by 'cmh123';#CMS的Activity Monitor对应数据库create database amon default character set utf8;grant all privileges on amon.* to 'amon'@'%' identified by 'cmh123';flush privileges;mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || amon || cmf || mysql || performance_schema || sys |+--------------------+6 rows in set (0.00 sec)--------------------
2. 选择第一台部署amon的进程(配置mysql jdbc jar)
[ptxbd@ptx-bigdata1 ~]$ sudo mkdir -p /usr/share/java[caimh@cdh01 CDH6.2.0]$ sudo tar -zxvf mysql-connector-java-5.1.47.tar.gz[caimh@cdh01 mysql-connector-java-5.1.47]$ pwd/home/caimh/CDH6.2.0/mysql-connector-java-5.1.47[caimh@cdh01 mysql-connector-java-5.1.47]$ sudo cp mysql-connector-java-5.1.47-bin.jar /usr/share/java/mysql-connector-java.jar
***提示:如果用到CDH,mysql-jdbc的目录统一用/usr/share/java。另外,去掉mysql-connector-java-5.1.47-bin.jar版本号,改为mysql-connector-java.jar
2.3 CM Server&Agent安装(官方rpm包)
Server:cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpmcloudera-manager-server-6.2.0-968826.el7.x86_64.rpmsudo rpm -ivh cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm --nodeps --forcesudo rpm -ivh cloudera-manager-server-6.2.0-968826.el7.x86_64.rpm --nodeps --forcesudo rpm -ivh cloudera-manager-agent-6.2.0-968826.el7.x86_64.rpm --nodeps --force第一台服务器安装完Server后,打开7180界面,不用动,继续安装其他机器Agent(包括第一台服务器)Agent:cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpmcloudera-manager-agent-6.2.0-968826.el7.x86_64.rpmsudo rpm -ivh cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm --nodeps --forcesudo rpm -ivh cloudera-manager-agent-6.2.0-968826.el7.x86_64.rpm --nodeps --force
2.3.1 安装CM Server(第一台服务器)
#安装CM Server[ptxbd@ptx-bigdata1 cdh6.2.0]$ sudo rpm -ivh cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm --nodeps --force[ptxbd@ptx-bigdata1 cdh6.2.0]$ sudo rpm -ivh cloudera-manager-server-6.2.0-968826.el7.x86_64.rpm --nodeps --force#配置/etc/cloudera-scm-server/db.properties文件[ptxbd@ptx-bigdata1 cdh6.2.0]$ cd /etc/cloudera-scm-server/[ptxbd@ptx-bigdata1 cloudera-scm-server]$ lldb.propertieslog4j.properties[ptxbd@ptx-bigdata1 cloudera-scm-server]$ sudo vi db.properties# The database type# Currently 'mysql', 'postgresql' and 'oracle' are valid databases. com.cloudera.cmf.db.type=mysql# The database host# If a non standard port is needed, use 'hostname:port'com.cloudera.cmf.db.host=cdh01# The database namecom.cloudera.cmf.db.name=cmf# The database usercom.cloudera.cmf.db.user=cmf# The database user's passwordcom.cloudera.cmf.db.password=cmh881290# The db setup type# After fresh install it is set to INIT# and will be changed post config.# If scm-server uses Embedded DB then it is set to EMBEDDED# If scm-server uses External DB then it is set to EXTERNAL com.cloudera.cmf.db.setupType=EXTERNAL#启动Server服务 --启动server服务,1~2分钟[ptxbd@ptx-bigdata1 cloudera-scm-server]$ sudo service cloudera-scm-server startRedirecting to /bin/systemctl start cloudera-scm-server.service
第一台服务器安装完Server后,访问:http://主机IP(hostname):7180,若可以访问(用户名、密码:admin),则安装成功,继续安装其他机器Agent(包括第一台服务器)
2.3.2 安装CM Agent
拷贝 cloudera-manager-agent-6.2.0-968826.el7.x86_64.rpm和cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm到所有 Server、Agent 节点
#远程拷贝rpm文件到其他服务器(2-5主机)1)sudo scp cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm ptxbd@ptx-bigdata2~5:/opt/software/cdh6.2.0/2)sudo scp cloudera-manager-agent-6.2.0-968826.el7.x86_64.rpm ptxbd@ptx-bigdata2~5:/opt/software/cdh6.2.0/#安装Agent(所有节点,第一台主机安装Server时已经安装过daemos)1)sudo rpm -ivh cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm --nodeps --force2)sudo rpm -ivh cloudera-manager-agent-6.2.0-968826.el7.x86_64.rpm --nodeps --force#配置Agent(第一台可以不配)sudo vi /etc/cloudera-scm-agent/config.ini[General]# Hostname of the CMserver_host=ptx-bigdata1#启动Agent(所有节点)sudo service cloudera-scm-agent startsudo service cloudera-scm-agent restart(重启)#查看Agent状态sudo service cloudera-scm-agent status
查看Agent状态
访问:http://主机IP(hostname):7180,若可以访问(用户名、密码:admin),则安装成功。
Manager 启动成功需要等待一段时间,过程中会在数据库中创建对应的表需要耗费一些时间。
2.3.3 配置Parcel
1.配置本地源
1)Manager 节点 mkdir -p /opt/cloudera/parcel-repo chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo 将下载好的文件( CDH-5.4.0-1.cdh5.4.0.p0.27-el6.parcel、 CDH-5.4.0-1.cdh5.4.0.p0.27-el6.parcel.sha、 manifest.json)拷贝到该目录下(mv) 2)Agent 节点(所有) 创建目录/opt/cloudera/parcels,执行: mkdir -p /opt/cloudera/parcels chown cloudera-scm:cloudera-scm /opt/cloudera/parcels 3)重启Server/Agent sudo service cloudera-scm-server restart sudo service cloudera-scm-agent restart(重启)
2.配置http源(建议,默认80端口,有的云服务80端口是关闭的,需要备案,如AWS)
#安装 HTTP 服务与 REPO(节点1)[ptxbd@ptx-bigdata1 cdh6.2.0]$ sudo yum install httpd#创建文件夹,存放cdh6的parcel包裹文件[ptxbd@ptx-bigdata1 cdh6.2.0]$ sudo mkdir /var/www/html/cdh6_parcel#移动parcel文件到/var/www/html/cdh6_parcel目录[ptxbd@ptx-bigdata1 cdh6.2.0]$ sudo mv CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel /var/www/html/cdh6_parcel/[ptxbd@ptx-bigdata1 cdh6.2.0]$ sudo mv CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel.sha /var/www/html/cdh6_parcel/[ptxbd@ptx-bigdata1 cdh6.2.0]$ sudo mv manifest.json /var/www/html/cdh6_parcel/#启动服务[ptxbd@ptx-bigdata1 cdh6.2.0]$ sudo systemctl start httpd --开启服务[ptxbd@ptx-bigdata1 cdh6.2.0]$ sudo systemctl enable httpd --开机自启动#扩展[ptxbd@ptx-bigdata1 cdh6.2.0]$ sudo systemctl stop httpd --停止服务[ptxbd@ptx-bigdata1 cdh6.2.0]$ sudo systemctl restart httpd --重启服务[ptxbd@ptx-bigdata1 cdh6.2.0]$ sudo systemctl status httpd --查看服务状态
访问ptx-bigdata1/cdh6_parcel
问题:无法访问
Httpd默认端口是80
国内AWS使用S3或者ec2的80\8080\443端口都需要ICP备案,否则访问不了
方案1:备案80端口
方案2:修改httpd默认80端口
2.4 CDH集群安装
2.4.1 CM集群配置
参考:CDH6从0到1搭建_qq_40127822的博客-CSDN博客_cdh6搭建
1.WELCOME
2.Accept License
3.Select Edition
4.Welcome (Add Cluster - Installation)
5.Specify Hosts
主机是自己规划安装agent的主机
6.Select Repository
删除远程parcel存储库,使用parcel本地源
7.Install Parcels
8.Inspect Hosts
***问题(3个问题)
问题1:减少集群使用交换内存
swappiness 设置值的区间在 0~100 之间,swap 即交换空间,作用类似于 Windows 中的虚拟内存,也就是当物理内存不足时,将硬盘上的 swap 分区当做内存来使用。但是,由于磁盘的读写速率与内存相比差太多,一旦发生大量交换,系统延迟就会增加,甚至会造成服务长期不可用,这对于大数据集群而言是致命的。vm.swappiness 参数用于控制内核对交换空间的使用积极性,默认是 60。值越高,就代表内核越多地使用交换空间。对于内存较大的 CDH 集群,我们一般将这个值设为 0 或 1。0 表示只有当可用物理内存小于最小阈值 vm.min_free_kbytes 时才使用交换空间,1 则表示最低限度地使用交换空间。
1、所有主机运行以下三条命令
sysctl -w vm.swappiness=0
echo 'vm.swappiness=0' >> /etc/sysctl.conf
sysctl -p
问题2:大页面
1、所有主机输入以下命令
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
2、所有主机的/etc/rc.local 中也需要加入这两条命令
vi /etc/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
问题3:暂时忽略
2.4.2 大数据组件安装
2.4.2.1安装HDFS&YARN
1.Select Services
先自定义安装HDFS和Yarn组件(先以通为主)
2.自定义分配角色
3.数据库设置
4.审核更改
5.命令详细信息
*****内网放开所有端口
6.汇总
调整后,一切正常,变绿了
2.4.2.2安装Zookeeper服务
1.添加服务
2.4.2.2安装Zookeeper服务
1.添加服务
选择zookeeper服务
2.自定义角色分配
4.审核更改
3.命令行详细信息
4.汇总
2.4.2.2安装Hive服务
参考:The Hive Service
数据库配置
报错1:JDBC driver cannot be found. Unable to find the JDBC database jar on host : ptx-bigdata2
解决方案
#ptx-bigdata2主机创建目录/usr/share/java,并修改属主[ptxbd@ptx-bigdata2 share]$ sudo mkdir java[ptxbd@ptx-bigdata2 share]$ sudo chown ptxbd:ptxbd java/[ptxbd@ptx-bigdata2 java]$ pwd/usr/share/java#scp拷贝(从主机1拷贝)[ptxbd@ptx-bigdata1 mysql-connector-java-5.1.47]$ sudo scp mysql-connector-java-5.1.47-bin.jar ptxbd@ptx-bigdata2:/usr/share/java/mysql-connector-java.jar
重新连接成功
命令详细信息
汇总
2.4.2.3 安装Oozie服务
1.选择安装服务
2.自定义角色分配
3.数据库设置
4.审核修改(默认)
5.命令详细信息
6.汇总
2.4.2.4安装Sqoop
参考:CDH 安装 sqoop1_あずにゃん梓喵的博客-CSDN博客
2.4.2.5 安装Spark
2.4.2.6 Hue安装
数据库选择
安装过程中出现问题,见问题3
命令详细信息汇总问题
问题参考:CDH添加Hue服务时遇到的坑_Tinson写字的地方-CSDN博客
HUE =Hadoop User Experience(hadoop用户体验),开源的Apache Hadoop UI系统。基于Python Web框架Django实现的。通过使用Hue我们可以在浏览器端的Web控制台上与Hadoop集群进行交互来分析处理数据。
问题:
启动hue web ui报错:Could not start SASL: Error in sasl_client_start (-4) SASL(-4): no mechanism available: No worthy mechs found (code THRIFTTRANSPORT): TTransportException('Could not start SASL: Error in sasl_client_start (-4) SASL(-4): no mechanism available: No worthy mechs found',)
解决方案:参考:CDH-hue : Could not start SASL: Error in sasl_client_start (-4) SASL(-4): no mechanism available_李现伟的博客-CSDN博客
1.在hue所在服务器执行
yum install cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-gssapi
或者
sudo yum install apache-maven ant asciidoc cyrus-sasl-devel cyrus-sasl-gssapi gcc gcc-c++ krb5-devel libxml2-devel libxslt-devel make mysql mysql-devel openldap-devel python-devel sqlite-devel gmp-devel
2.在CDH中重启hue
2.4.2.7 安装Oozie
oozie本质就是一个作业协调工具(底层原理是通过将xml语言转换成mapreduce程序来做,但只是在集中map端做处理,避免shuffle的过程。)
Oozie的工作流必须是一个有向无环图,实际上Oozie就相当于Hadoop的一个客户端,当用户需要执行多个关联的MR任务时,只需要将MR执行顺序写入workflow.xml,然后使用Oozie提交本次任务,Oozie会托管此任务流。
参考:
什么是Oozie——大数据任务调度框架_TNTZS666的博客-CSDN博客_oozie怎么读
2.4.3 问题
问题1:
Hive 未配置为使用 Spark 服务。如果将 Hive 作业提交到 Spark 执行引擎,这些作业不会正确运行。为确保 Hive on Spark 作业正确运行,请配置 Spark On YARN 服务属性
解决方案:点击Spark On YARN Service,选择hive运行引擎Spark-2
问题2:
Port conflict detected: 18088 (History Server WebUI Port) is also used by: History Server (ptx-bigdata1).
原因是CM安装了2个版本的Spark/Spark-2,服务端口冲突。
解决方案修改了低版本Spark的端口号
问题3:安装hue,数据库连接报错Unexpected error. Unable to verify database connection
1.查看日志/var/log/cloudera-scm-server/ cloudera-scm-server.log报错是:ImportError: libxslt.so.1: cannot open shared object file: No such file or directory
原因分析:是centos缺少库文件,执行如下命令即可
解决方案:在安装hue的服务器上执行命令
yum install krb5-devel cyrus-sasl-gssapicyrus-sasl-deve libxml2-devel libxslt-develmysqlmysql-developenldap-devel python-devel python-simplejsonsqlite-devel
问题4:HUE Load Balancer 启动失败
原因:日志显示没有安装httpd服务。
解决方案:安装httpd服务,安装完成后记得查看是否启动
yum -y install mod_ssl
yum -y install httpd
参考:HUE Load Balancer 启动失败_jast-CSDN博客
3 内存调优(后续)
参考:cdh内存分配参考文档_adshiye的博客-CSDN博客_cdh内存分配