大数据学习第二课:CDH安装

来源:互联网 发布:如何在mac上玩dota2 编辑:程序博客网 时间:2024/06/05 19:59

本章主要内容:

  • Hadoop发行版介绍
  • CDH离线安装教程
  上一课我们学习了如何搭建虚拟机的,不过那也只是完成了入门大数据的第一步,今天开始进行第二步,也就是大数据相关工具的安装。

一、Hadoop发行版

  Apache Hadoop往小了说就是个开源项目,往大了说简直就是开源界唯一的大数据标准。它实在是太火了,所以很多商业公司在它的基础上包装成不同的发行版。就类似Linux很火,为了方便普通用户它也有很多发行版,如RedHat,Ubuntu等。

  Hadoop的发行版很多,有商业的有免费的,例如华为和Intel都有自己的商业发行版。不过市场占有率最高的还是这三个玩家:Cloudera、Hortonworks和MapR。

  2008年成立的Cloudera是最早将Hadoop商用的公司,为合作伙伴提供Hadoop的商用解决方案,主要是包括支持,咨询服务,培训。2009年Hadoop的创始人Doug Cutting大神也任职于Cloudera公司。Cloudera产品主要为CDH,Cloudera Manager,Cloudera Support。CDH是Cloudera的hadoop发行版,完全开源,比Apache Hadoop在兼容性,安全性,稳定性上有增强。Cloudera Manager是集群的软件分发及管理监控平台,可以在几个小时内部署好一个Hadoop集群,并对集群的节点及服务进行实时监控。Cloudera Support即是对Hadoop的技术支持。
  2011年成立的Hortonworks是雅虎与硅谷风投公司Benchmark Capital合资组建的公司。公司成立之初吸纳了大约25名至30名专门研究Hadoop的雅虎工程师,上述工程师均在2005年开始协助雅虎开发Hadoop,这些工程师贡献了hadoop 80%的代码。雅虎工程副总裁、雅虎Hadoop开发团队负责人Eric Baldeschwieler出任Hortonworks的首席执行官。Hortonworks的主打产品是Hortonworks Data Platform (HDP),也同样是100%开源的产品,HDP除了常见的项目外还包含了Ambari,一款开源的安装和管理系统,还有HCatalog,一个元数据管理系统。
  Cloudera和Hortonworks均在不断的提交代码完善Apache Hadoop开源版本,而2009年成立的MapR公司在Hadoop领域显得有点特立独行,因为它提供了一款特别独特的发行版 。Hadoop在性能(在当前Hadoop的设计中,所有的元数据操作都要通过集中式的Namenode来进行,Namenode有可能是性能的瓶颈;M/R应用程序需要通过DataNode来访问HDFS, 这就涉及到额外的进程切换和网络传输开销),可靠性与扩展性(Namenode,Jobtracker单点问题),企业级应用上的弱点(比如完全可读写的文件系统,Snapshot,Mirror等等)各大厂商也是都知道的,MapR则认为,Hadoop的这些缺陷来自于其架构设计本身,小修小补不能解决问题。他们选择了一条艰难得多的路:用新架构重写HDFS,同时在API级别,和目前的Hadoop发行版保持兼容。这家2009年成立的创业公司,在蛰伏了两年之后,终于一鸣惊人,大放异彩。他们成功的“构建一个HDFS的私有替代品,这个替代品比当前的开源版本快三倍,自带快照功能,而且支持无Namenode单点故障(SPOF),并且在API上和兼容,所以可以考虑将其作为替代方案。” MapR版本不再需要单独的Namenode机器,元数据分散在集群中,也类似数据默认存储三份。也不再需要用NAS来协助Namenode做元数据备份,提供了机器使用率。还有个重要的特点的可以使用nfs直接访问hdfs,提供了与旧有应用的兼容性。镜像功能也很适合做数据备份,而且支持跨数据中心的镜像,快照功能对于数据的恢复作用明显。
  我们国内目前使用的最多的还是Cloudera的CDH,它有一下优点:

  • CDH对Hadoop版本的划分非常清晰
  • CDH文档清晰,很多采用Apache版本的用户都会阅读cdh提供的文档,包括安装文档、升级文档等
  所以本课我们主要以CDH的发行版学习。

二、文件下载

  安装软件当然要先下载安装包,这里先让大家去下载文件,因为文件还不小,接近2G,下好后放到一个统一的目录,后面使用。我们主要有两类文件需要下载。一是Cloudera Manager,去这个地址 http://archive.cloudera.com/cm5/repo-as-tarball/ 找一个版本下载,我下载的是最新的5.13.0版本;二是CDH包,对应的最新版本地址是http://archive.cloudera.com/cdh5/parcels/5.13.0/,目录里面的parcel文件,对应的sha1文件和manifest.json文件都下载。

三、CDH离线安装

  CDH提供了在线安装或软件源安装,但是都对安装机器有联网要求,而且包还很大,下载还很慢,官方也不推荐生产环境使用在线安装的方式,所以我们这里也离线安装。Cloudera Manager是CDH的管理平台,可以对集群进行安装、监控、诊断等功能,很强大,是Cloudera公司的卖点,所以要安装CDH,需要先安装Cloudera Manager。

3.1、修改yum源

  刚装的系统一般默认的官方的yum源,在国内的网络环境肯定不太试用,所以我们使用阿里云的yum源,只需要使用下面的几个命令即可。

yum -y install wget  #安装wget工具mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak  #备份默认yum源wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo  #下载阿里云yum源yum makecache  #缓存yum源信息

3.2、关闭防火墙

  集群节点之间有很多端口要互通,所以为了方便我们直接关闭防火墙,CentOS 7默认防火墙是firewall服务,所以使用下面的命令就可以关闭并禁止开机启动。

systemctl stop firewalld  #停止防火墙systemctl disable firewalld  #禁止开机启动firewall-cmd --state  #查看是否还在运行

3.3、安装Mysql

  安装Cloudera Manager之前,需要先安装一下mysql,因为Cloudera Manager的一些数据和Hive、Pig等大数据组件的元数据都需要数据库存储。这里我们安装最新稳定版5.7。首先去下载最新的yum源。

wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm  //下载yum源yum -y install mysql57-community-release-el7-11.noarch.rpm  //安装yum源

  然后就是最简单的安装了,安装完成之后直接启动即可。

yum -y install mysql-community-server //安装mysql server
systemctl start mysqld  //启动mysql

  等下将Mysql密码设置简单一些,所以需要设置一下mysql的复杂密码验证和编码,编辑/etc/my.cnf文件,增加下面的行。因为这里学习我们可以将Mysql密码设置简单一些,但是Mysql默认简单密码是不通过的,所以需要修改一下。

[client]default-character-set=utf8

  在[mysqld]下面增加下面的行。

validate_password=offdefault_password_lifetime=0default-storage-engine=INNODBcharacter-set-server=utf8collation-server=utf8_general_ci

 然后重启下服务,顺便将Mysql服务设置成开机自启动。

systemctl restart mysqld //重启systemctl status mysqld //检查状态

  也可以将其设置成开机自启动。

systemctl enable mysqld  //开机自启动systemctl disable mysqld  //禁止开机启动

  接下来修改一下root的密码,因为5.7安装后root帐号会有一个随机默认密码,所以先找到这个随机默认密码。

grep 'temporary password' /var/log/mysqld.log //查询默认密码
 

  使用mysql -uroot -p命令登录,将默认密码修改成123456。

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

  目前root账户只能本机登录,我们肯定还需要外部登录mysql,一般都是新建账户给予访问权限,这里为了方便直接修改root帐号的访问权限。

UPDATE mysql.user SET Host = '%' WHERE User = 'root';flush privileges;

3.4、ssh免密登录

  因为大数据工具集群主服务器经常要向节点服务器下发命令,所以一般都是要免密登录的。

  首先将IP地址和HOSTNAME配置到/etc/hosts文件,然后使用如下两条命令。

ssh-keygen -t rsa  //生成密钥对ssh-copy-id -i master   //复制到免密登录机器上

  配置有时候就是这么简单。

3.5、安装Java

  官方安装文档上建议将Java安装到/usr/java/jdk-version下,也就是去Oracle上面下载JDK包,然后再/usr/java下解压,这里我们用最新稳定版jdk-8u151,解压之后将JAVA_HOME和PATH补充到/etc/profile中,如下。

export JAVA_HOME=/usr/java/jdk1.8.0_151export PATH=$PATH:$JAVA_HOME/bin

  然后source /etc/profile,使用java命令验证一下即可。

3.6、时间同步

  CDH集群之间是要保持时间同步,这里一般使用的协议是NTP,CentOS下的工具就是ntp和ntpdate,大的网络可以自己搭建ntp服务器,小的可以使用国家和公司免费提供的。这里为了方便,就直接使用默认提供的NTP服务器,直接使用下面的命令即可。

yum -y install ntp ntpdate  #安装systemctl start ntpd  #启动systemctl enable ntpd  #加到开机启动

3.7、工具补充

  我这里由于安装的是Miniaml版的CentOS,在后面实验会少一些工具,所以可以在这里提前安装。

yum -y install perl psmisc python-lxml

3.8、安装Cloudera Manager

  将下载好的Cloudera Manager tar包文件到我们的虚拟机的/opt目录下,直接解压。解压完成之后,需要创建一个用户cloudera-scm,因为Cloudera Manager Server默认使用它进行运行的,直接使用下面的命令即可。

useradd --system --home-dir /opt/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
  因为CM需要访问我们刚刚搭建的Mysql,所以我们需要将Mysql的JDBC驱动放到项目中,放到/opt/cm-5.13.0/share/cmf/lib/下即可。记得创建用户和添加Mysql驱动在每个机器上都要做。

  接下来我们针对master服务器操作即可。
  首先要执行CM提供的数据库初始化脚本,脚本的位置和用法如下。

usage: /opt/cm-5.13.0/share/cmf/schema/scm_prepare_database.sh [options] (postgresql|mysql|oracle) database username [password]
  然后执行初始化命令,例如我的如下。

/opt/cm-5.13.0/share/cmf/schema/scm_prepare_database.sh mysql -hlocalhost -uroot -p123456 scm scm 123456
  也就是创建一个scm的数据库,创建一个scm用户,密码是123456。

  然后查看/opt目录,刚才我们解压CM包的时候,不仅多一个cm-5.13.0目录,还有一个cloudera目录,这个目录主要放置CDH相关包的,这里我们需要将之前下载的CDH包parcel文件和manifest.json文件上传到/opt/cloudera/parcel-repo目录,将CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel.sha1文件改名成CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel.sha,最后的1去掉,然后也上传到/opt/cloudera/parcel-repo目录。

  然后通过以下命令先启动服务端,服务端启动时间比较长,可以通过netstat -tnpl命令查看7180端口是否监听了。

/opt/cm-5.13.0/etc/init.d/cloudera-scm-server start
  服务端启动完成之后,再去客户端机器上,先修改客户端的配置文件/opt/cm-5.13.0/etc/cloudera-scm-agent/config.ini,将里面的server_host的值修改为CM服务端的HOSTNAME,然后使用下面的命令启动客户端。

/opt/cm-5.13.0/etc/init.d/cloudera-scm-agent start

四、安装CDH

  上面我们将Cloudera Manager安装成功了,接下来就开始安装真正的大数据工具了。首先在浏览器输入http://ip:7180,访问CM Server,其中的ip是CM Server的机器IP,但是为了更好的操作,一般将我们的服务器的IP和HOSTNAME配置到本地的hosts中。

  访问CM Server首先会进入登录页,默认账户名和密码均是admin。登录之后首先是License内容和一些限制条件,这里我们需要接受这些条件才能继续,如下图。


  继续之后下一页是选择安装版本,这里我们选择免费版的,别看是免费版,但是对于很多需求都能完成。收费版本的管理工具和受到的服务会更好一些。


  接下来就是感谢你安装CDH了,并列出来了可以安装哪些服务。


  接下来是选择安装的机器,启动了Cloudera Manager Agent的机器会自动识别到,例如我只启动了一个机器的Agent。


  然后是选择安装的包,这里它会建议我们使用Parcels包,里面还具体到包的位置,并且自动识别了我们放到里面的包,这里我们选择离线下载的5.13.0的版本的。


  接下来是安装选择的Parcels包,这个安装是自动完成的,但这个安装不是安装Hadoop那些玩意,这一步的主要操作是Agent服务器从Server服务器上下来Parcels包,然后解压。

  接下来是检查我们要安装的服务器是否有什么地方不满足要求。我这里有两个警告,第一个是swappiness过大,里面建议我们最大设置到10,那我们就按要求做,通过下面这个命令即可修改。

sysctl vm.swappiness=10
  另一个警告是机器默认启用了HugePage功能,这里建议我们禁止掉,不然可能会导致一些性能问题,这里我们使用下面两个命令禁止掉。
echo never > /sys/kernel/mm/transparent_hugepage/defragecho never > /sys/kernel/mm/transparent_hugepage/enabled
  然后将上面这两个命令放到系统启动执行脚本中,如/etc/rc.local。然后点一下“Run Again”重新检测一下。

  下面就是选择安装哪些服务,一般工作中机器资源充足的话就安装所有服务,安装完成之后不使用的服务可以停掉,所以也不会浪费资源。这里因为我的机器有限,我就选取一部分。这里需要注意的是你选的服务是否依赖其他服务,比如HBase需要依赖HDFS和ZooKeeper,所以选一个HBase另外两个也要选,Hive依赖MR,所要选上Yarn,不然后面安装会失败,因为你安装的服务找不到依赖的服务。


  接下来就校验数据库连接,这里我先手动给三个服务都创建一个数据库,然后去测试连接它们,这里我直接使用的都是root密码,所以前面需要将root帐号修改为外网可以访问的。


  然后就是自动安装的过程了,但是我这里安装Hive和Oozie的时候失败了,如下图。


  追踪到失败的步骤,选择里面的stderr查看标准错误,异常信息是没找到Mysql驱动。额,很明显,启动的时候连接Mysql,但是没有添加相关的Jar包。后面安装Oozie服务的时候也会出现此问题,所以这里我们需要将我们Mysql驱动放到下面三个目录,然后重新安装即可,重新安装会从失败的地方开始,所以不用担心失败,遇到失败看看错误输出,一般都很好解决。

/opt/cloudera/parcels/CDH-5.13.0-1.cdh5.13.0.p0.29/lib/hive/lib/opt/cloudera/parcels/CDH-5.13.0-1.cdh5.13.0.p0.29/lib/oozie/libtools/opt/cloudera/parcels/CDH-5.13.0-1.cdh5.13.0.p0.29/lib/bigtop-tomcat/lib

如果没什么问题,那就恭喜了,继续之后就能看到下面的大结局画面了。


五、总结

  本课我们主要学习了离线安装CDH平台,主要包含两部分:一是Cloudera Manager Server端和Agent端,二是大数据相关工具,如Hadoop、HDFS、HBase等。可以看出CDH的平台的安装还是比较简易的,如果使用传统方式要安装一个拥有100台机器的集群,可能两周未必能全部OK,但是使用CDH一般不到一天就能安装完成,效率提升显而易见,也帮助很多入门学习者更快的搭建出来学习开发环境。

原创粉丝点击