接着上面继续
三、CM的安装
首先安装第三方依赖包 (所有服务器)
# yum -y install chkconfig python bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyrus-sasl-gssapi fuse portmap fuse-libs redhat-lsb
Complete! 表示安装成功
1)在zyf1.hadoop上创建目录
# mkdir -p /opt/cloudera-manager //目录路径和名称不能变
2)解压cm的tar包到/opt/cloudera-manager
# tar zxf /opt/software/cloudera-manager-el6-cm5.3.6_x86_64.tar.gz -C /opt/cloudera-manager/
drwxr-xr-x 4 1106 4001 4096 7月 30 2015 cloudera
drwxr-xr-x 9 1106 4001 4096 7月 30 2015 cm-5.3.6 //是CM框架本身的安装文件
3)修改agent的配置文件
/opt/cloudera-manager/cm-5.3.6/etc/cloudera-scm-agent //agent配置文件目录
# vi config.ini
172.21.192.1 zyf1.hadoop mysql 时间服务器 server
172.21.192.2 zyf2.hadoop agent
172.21.192.3 zyf3.hadoop agent
172.21.192.4 zyf4.hadoop agent
172.21.192.5 zyf5.hadoop agent
# Hostname of the CM server.
server_host=172.21.192.1 //server的hostname
# Port that the CM server is listening on.
server_port=7182 //server的监听端口
4)将cm的安装目录拷贝给其他集群节点
# scp -r /opt/cloudera-manager/ 172.21.192.2:/opt/
# scp -r /opt/cloudera-manager/ 172.21.192.3:/opt/
…………
5)为CM创建一个专用的普通用户 cloudera-scm (所有服务器)
useradd –system 表示创建的是系统用户
–home=/opt/cloudera-manager/cm-5.3.6/run/cloudera-scm-server 指定了用户的主目录
–no-create-home 表示不再创建用户的主目录
–shell=/bin/false 不作为登陆用户
–comment “Cloudera SCM User”
cloudera-scm 用户名 cxd
验证:
# cat /etc/passwd | grep cloudera-scm
6)配置CM访问数据库的权限,添加一个temp用户
1、mysql> grant all privileges on *.* to 'temp'@'%' identified by 'temp' with grant option ;
赋予权限命令
on . on后面表示可以访问哪些数据库下的哪些表 *代表所有
to ‘temp’@’%’ to后面表示赋予权限给哪个访问用户,@后面表示该用户需要通过哪个服务器来访问,%代表任意
with grant option 权限传递的意思
2、mysql> flush privileges ; 需要刷新权限才生效
3、在172.21.192.1服务器上执行CM在mysql中的初始化脚本
/opt/cloudera-manager/cm-5.3.6/share/cmf/schema 初始化脚本路径
# ./scm_prepare_database.sh mysql -h bigdata01.beifeng.com -utemp -ptemp --scm-host bigdata01.beifeng.com scm scm scm
报错:缺少驱动包
使用CM管理集群时,如果某台节点需用用到驱动包 ,只需要将驱动包放入/usr/share/java 下,需要驱动包的服务会自动到该目录下寻找
# cp /opt/softwares/mysql-connector-java.jar /usr/share/java
重新执行上面步骤
All done, your SCM database is configured correctly!
7)配置CDH源
CDH源:
CDH-5.3.6-1.cdh5.3.6.p0.11-el6.parcel 包
集成了Hadoop hive sqoop oozie ….. 的安装文件
1、创建目录
# mkdir -p /opt/cloudera/parcel-repo //在server节点上
# mkdir -p /opt/cloudera/parcels //在agent节点上
2、将parcel文件移动到parcel-repo目录下
# mv /opt/softwares/CDH-5.3.6-1.cdh5.3.6.p0.11-el6.parcel* /opt/cloudera/parcel-repo/
3、修改CDH源校验码文件的名称
# mv CDH-5.3.6-1.cdh5.3.6.p0.11-el6.parcel.sha1 CDH-5.3.6-1.cdh5.3.6.p0.11-el6.parcel.sha
4、更改目录所有人
# chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/ //在server节点上
# chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcels/ //在agent节点上
8)启动CM进程服务
1、启动server
# /opt/cloudera-manager/cm-5.3.6/etc/init.d/cloudera-scm-server start
启动前注意检查虚拟机的内存是否预留有8G
jetty服务器已经启动并准备完善
web的访问端口 :7180
2、启动agent
# /opt/cloudera-manager/cm-5.3.6/etc/init.d/cloudera-scm-agent start
http://172.21.192.1:7180
登陆CM的web-ui界面
admin
admin
选择免费版
选择向集群添加4台agent主机
一个CM可以管理多个大数据集群
检查主机的正确性:
警告1:
Cloudera 建议将 /proc/sys/vm/swappiness 设置为 0。当前设置为 60。使用 sysctl 命令在运行时更改该设置并编辑 /etc/sysctl.conf 以在重启后保存该设置。您可以继续进行安装,但可能会遇到问题,Cloudera Manager 报告您的主机由于交换运行状况不佳。以下主机受到影响:
bigdata[02-05].beifeng.com
解决:
# echo 0 > /proc/sys/vm/swappiness
警告2:
已启用“透明大页面”,它可能会导致重大的性能问题。版本为“CentOS release 6.4 (Final)”且发行版为“2.6.32-358.el6.x86_64”的 Kernel 已将 enabled 设置为“[always] never”,并将 defrag 设置为“[always] never”。请运行“echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag”以禁用此设置,然后将同一命令添加到一个 init 脚本中,如 /etc/rc.local,这样当系统重启时就会予以设置。或者,升级到 RHEL 6.5 或更新版本,它们不存在此错误。将会影响到以下主机:
bigdata[02-05].beifeng.com
解决:
# echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
# vi /etc/rc.local
添加上面命令
各个大数据组件的安装部署及测试
1、 hdfs
/dfs/dn datanode本地数据存储路径
/dfs/nn
/dfs/snn
/dfs/jn
/opt/cloudera/parcels/CDH/etc 目录为各个大数据组件的etc目录
# ps -ef |grep agent
agent是一个Python进程,所以jps不能看到进程名称及pid号
Hue + CM
CM用来安装部署管理集群及集群上的各个大数据组件(服务的运行、配置文件的修改)
Hue用来编辑并提及一些任务
# hdfs dfs -ls / //CM 管理下的大数据框架的命令都已经配置好了环境变量,可以直接使用
# hdfs dfs -mkdir -p /user/beifeng
报错:mkdir: Permission denied: user=root, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-x
解决:
1)配置跳过hdfs的权限检查
如何修改配置??
hdfs组件主页面-》配置-》找到 ‘检查 HDFS 权限-》去掉对勾
2)使用sudo命令
sudo -u + username + command 使用指定的用户执行后面的命令
# sudo -u hdfs hdfs dfs -mkdir -p /user/beifeng
3) 在命令行设置一个临时的环境变量
# export HADOOP_USER_NAME=hdfs //针对Hadoop用户设置一个临时的环境变量名,后面对Hadoop的操作就会使用对应的 变量名
# hdfs dfs -mkdir -p /user/beifeng
2、yarn
进行wordcount测试
# export HADOOP_USER_NAME=hdfs
# hdfs dfs -mkdir -p /user/zyf/input
# hdfs dfs -put /opt/wc.txt /user/beifeng/input
# yarn jar /opt/cloudera/parcels/CDH/jars/hadoop-examples-2.5.0-mr1-cdh5.3.6.jar wordcount /user/zyf/input /user/beifeng/output1
问题:
reduce的默认个数是8个 !!
通过查看MapReduce的历史任务 -》Configuration -》搜索mapreduce.job.reduces -》值是8
解决:
yarn组件主页面-》配置-》搜索mapreduce.job.reduces-》将value由8改为1
3、考虑nn rm升级为ha模式
首先添加zookeeper组件
选择3台或以上奇数个节点
hdfs主页面-》右上角操作-》启动高可用性-》
JournalNode 编辑目录 /dfs/jn
从非ha模式升级为ha模式会报错:
对当前 NameNode 的名称目录进行格式化。如果名称目录不为空,此操作将失败。
yarn主页面-》右上角操作-》启动高可用性-》
查看某些服务组件的客户端配置文件(本地agent的配置文件)
组件的主页面-》右上角操作-》下载本地客户端配置-》查看
在linux系统上查看某些组件的配置文件
/etc/ 目录下
/etc/hadoop/conf.cloudera.hdfs 就是hdfs组件的配置文件目录
4、hive
配置hive访问mysql的相关权限及提前创建好存储元数据的库
mysql> create database hive default character set latin1 ;
mysql> grant all privileges on hive.* to 'hive'@'%' identified by 'hive' ;
mysql> flush privileges ;
metastore 服务进程的作用!!
hive --service
hiveserver2 ??
测试连接报错:
JDBC driver cannot be found. Unable to find the JDBC database jar on host : bigdata03.beifeng.com.
解决:
需要在部署metastore 服务进程所在的服务器上添加驱动包
# scp /opt/softwares/mysql-connector-java.jar zyf3.hadoop:/usr/share/java
注意:
CM管理的集群会自动到服务器的/usr/share/java目录下找驱动包,但是驱动包的名称必须使用 mysql-connector-java.jar!!!!!
修改hive的配置文件,在交互命令行显示当前所在数据库名称,显示表头信息
hive主页面-》配置-》Gateway default -》高级 -》hive-site.xml高级代码段-》粘贴property配置信息-》重新部署客户端配置
本地的配置文件
# cat /etc/hive/conf.cloudera.hive/hive-site.xml
5、sqoop
使用sqoop连接mysqls数据库并列出可用的database
sqoop list-databases \
–connect jdbc:mysql://172.21.192.1:3306 \
–username root \
–password 123456
报错1: 缺少jdbc驱动
拷贝驱动包到 /usr/share/java
报错2: root用户没有通过bigdata03的访问权限
mysql> grant all privileges on *.* to 'root'@'zyf3.hadoop' identified by '123456' ;
mysql> flush privileges ;
mysql> use mysql ;
mysql> select user , host from user ;
+——+———————–+
| user | host |
+——+———————–+
| hive | % |
| temp | % |
| root | 127.0.0.1 |
| root | ::1 |
| root | zyf1.hadoop.com |
| scm | zyf1.hadoop.com |
| root | zyf3.hadoop.com |
| root | localhost |
+——+———————–+
总结:
sqoop连接数据库的话,需要以下:
1、有驱动包
2、相关用户需要有访问权限
6、flume
如何查看日志:
本地路径 /var/log/
web-ui上:
可以通过点击某个服务进程实例进入到该实例的主页面上,然后点击汇总下的'日志文件'
可以通过点击主机-》某台主机-》进入到对应主机的主页面-》左下角有部署在该主机上的服务角色-》点击查看日志
诊断-》日志-》匹配搜索日志
自定义flume-agent实例
flume-agent
source exec : tail -f /.../xx.log
sink - hdfs :
The configuration file needs to define the sources,
the channels and the sinks.
Sources, channels and sinks are defined per agent,
in this case called ‘agent’
define agent source、 channel、 sinks、name
a1.sources = s1
a1.channels = c1
a1.sinks = k1
define sources 监控agent的日志文件
a1.sources.s1.type = exec
a1.sources.s1.command = tail -F /opt/cloudera-manager/cm-5.3.6/log/cloudera-scm-agent/cloudera-scm-agent.log
a1.sources.s1.shell = /bin/bash -c
define channels
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
define sinks
a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = hdfs://nameservice1/flume/%Y%m%d
a1.sinks.k1.hdfs.filePrefix = access_log
设置目录按照年/月/日进行回滚
a1.sinks.k1.hdfs.round = true
a1.sinks.k1.hdfs.roundValue = 1
a1.sinks.k1.hdfs.roundUnit = day
解决生产很多小文件,设置文件回滚的条件
a1.sinks.k1.hdfs.rollInterval = 0
a1.sinks.k1.hdfs.rollSize = 134217728
a1.sinks.k1.hdfs.rollCount = 0
这个参数必须设置,不然上面的回滚设置不生效
a1.sinks.k1.hdfs.minBlockReplicas = 1
a1.sinks.k1.hdfs.batchSize = 1000
a1.sinks.k1.hdfs.fileType = DataStream
a1.sinks.k1.hdfs.writeFormat = Text
a1.sinks.k1.hdfs.useLocalTimeStamp = true
关联 sources和 sinks
a1.sources.s1.channels = c1
a1.sinks.k1.channel = c1
flume组件的主页面-》配置-》Agent default group-》编辑代理名称及配置信息-》保存-》实例-》选择对应的agent实例并启动
报错:
rg.apache.hadoop.security.AccessControlException: Permission denied: user=flume, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-x
解决:
# hdfs dfs -mkdir /flume
# hdfs dfs -chown flume:flume /flume
================================================
30台
ip:172.21.192.1-30
端口:22
用户名:root
密码: 123456
172.21.192.1-5
172.21.192.6-10
172.21.192.11-15
172.21.192.16-20
172.21.192.21-25
172.21.192.26-30
…………
============================================
CM架构
了解架构
搭建
编码测试
server :
主节点
agent :
从节点 ,主机
database:
需要一个数据库来存储集群的元数据信息
managerment service :
是一组监控组件
是一组服务进程,用来监控集群的资源、事件、服务运行等状态信息
web-Ui
jetty服务器
内嵌式服务器
一、环境准备
1、配置ip、主机名、hosts映射 (所有)
2、禁用ipv6
echo “xxx” >> /etc/mod…..
重启生效
ip a ,查看是否出现inet6信息
3、关闭防火墙并设置为开机不启动
service iptables stop
chkconfig iptables off
chkconfig –list | grep iptables
4、禁用selinux安全机制
vi /etc/sysconfig/selinux
验证:
gettenforce 返回disabled表示禁用成功
5、SSH无秘钥登陆
CM 管理的集群需要每台服务器可以互相免秘钥登陆
ssh-keygen
ssh-copy-id ip
验证:
ssh ip
exit !!!
6、JDK配置
/usr/java/... 规范 !!
7、设置用户可以使用的服务器最大资源限制
vi /etc/security/limits.conf
可打开最大的文件数量
可以启动的最大进程数量
可以使用最大的内存值
8、配置集群的时间同步
在集群中选择一台服务器作为集群的时间服务器( 172.21.192.1)
更新此台服务器的系统时间及本地硬件时钟时间
设置系统时间本地硬件时钟时间自动同步
其他集群节点与此台时间服务器进行时间同步
ntpdate -u 172.21.192.1
crontab -e
*/20 * * * * /bin/xx/ntpdate -u 172.21.192.1
service crond restart
二、mysql的安装部署
CM 5.3.6
需要database的支持
mysql
5.5 不支持impala安装
5.6 –选择
mysql的安装方式
yum 安装
编译安装
rpm 安装
直接使用yum安装默认的mysql版本是 5.1
需要修改mysql的yum源
yum -y install mysql-community-server
三、CM的安装部署 (tar解压安装)
1、需要先安装CM的第三方依赖包
yum 安装
2、解压CM的tar包到 /opt/cloudera-manager
修改 agent的配置文件
server_host 配置server节点的主机名
server_port 7182
scp -r /opt/cloudera-manager ip其他节点:/opt/
3、创建CM专用的普通用户: cloudera-scm
指定创建用户的参数
4、配置CM访问mysql的权限及执行CM自带的初始化在mysql中状态的脚本
grant all privilege on . to ‘temp’@’%’ identified by ‘temp’ with grant option ;
with grant option 表示权限传递
flush privileges ;
5、配置CDH源
CDH源指各个大数据框架安装部署文件的一个集成包 parcel包
创建目录
/opt/parcel-repo //在server节点上
/opt/parcels //在agent上创建
移动CDH源到 parcel-repo
修改parcel-repo和parcels所属人
6、启动CM服务器进程
7、登陆CM的web-ui界面
172.21.192.1:7180
================================================
ambari — CM
Apache
hortonworks —-Hadoop发型版本之一
cloudera
7、oozie
Oozie web console is disabled.
解决:
# scp ext-2.2.zip 172.21.192.5:/var/lib/oozie //将zip包发送到部署oozie server所在的服务器的对应目录下
# unzip ext-2.2.zip 解压zip包
8、hbase
安装后提示需要重启集群
重启集群
9、hue
10、spark
CDH-5.3.6 –spark1.2
spark1.6.1
spark的两种运行模式(资源管理及任务调度上的模式不同)
spark
spark on yarn 模式
spark的资源分配及任务的调度由yarn来完成
resourcemanager
nodemanager
spark(standalone)
spark on standalone模式
使用spark自带的框架来进行资源分配及任务的调度
master 主节点
worker 从节点
基于spark使用scala语言进行workcount统计
scala (简洁,优雅)
scala既是面向对象也是面向函数式编程的一门语言
scala和java都是运行在jvm之上
scala使用scalac编译器将scala代码编译成 xx.class
javac xx.class
java helloworld
scalac xx.class
scala helloworld
scala与java可以互操作
scala可以调用所有的java类库
在java代码中可以插入一段scala代码
scala
在scala中函数是一等公民
函数可以作为一个参数传入另一个函数中 --高阶函数
函数中可以在定义另一个函数 --闭包
一个函数的返回值类型可以是一个函数
Hadoop
hdfs
yarn (standalone)
==================================================
模板:
可以利用CM创建主机模板
通过模板可以快速给新添加的主机进行覆盖模板达到快速的扩展集群效果
datanode/regionserver模板 -》直接覆盖新的主机-》快速添加datanode/regionserver节点
这里只是简单写了下流程,没有配图,有问题的地方欢迎大家帮忙指正!!!!