hadoop集群CDH系统搭建(二)

来源:互联网 发布:js定时器setinterval 编辑:程序博客网 时间:2024/06/05 10:39

接着上面继续
三、CM的安装

首先安装第三方依赖包 (所有服务器)# yum -y install chkconfig python bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyrus-sasl-gssapi fuse portmap fuse-libs redhat-lsbComplete! 表示安装成功 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.sha4、更改目录所有人      # 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 starthttp://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节点

这里只是简单写了下流程,没有配图,有问题的地方欢迎大家帮忙指正!!!!

原创粉丝点击