CDH5.7Hadoop集群搭建(离线版)

用了一周多的时间终于把CDH版Hadoop部署在了测试环境,本文将就这个部署过程做个总结。

一、Hadoop版本选择。

Hadoop大致可分为Apache Hadoop和第三方发行第三方发行版Hadoop,考虑到Hadoop集群部署的高效,集群的稳定性,以及后期集中的配置管理,业界多使用Cloudera公司的发行版,简称为CDH。

下面是转载的Hadoop社区版本与第三方发行版本的比较:

Apache社区版本

优点:

  1. 完全开源免费。
  2. 社区活跃
  3. 文档、资料详实

缺点:

  1. 复杂的版本管理。版本管理比较混乱的,各种版本层出不穷,让很多使用者不知所措。
  2. 复杂的集群部署、安装、配置。通常按照集群需要编写大量的配置文件,分发到每一台节点上,容易出错,效率低下。
  3. 复杂的集群运维。对集群的监控,运维,需要安装第三方的其他软件,如ganglia,nagois等,运维难度较大。
  4. 复杂的生态环境。在Hadoop生态圈中,组件的选择、使用,比如Hive,Mahout,Sqoop,Flume,Spark,Oozie等等,需要大量考虑兼容性的问题,版本是否兼容,组件是否有冲突,编译是否能通过等。经常会浪费大量的时间去编译组件,解决版本冲突问题。

第三方发行版本(如CDH,HDP,MapR等)

优点:

  1. 基于Apache协议,100%开源。
  2. 版本管理清晰。比如Cloudera,CDH1,CDH2,CDH3,CDH4等,后面加上补丁版本,如CDH4.1.0 patch level 923.142,表示在原生态Apache Hadoop 0.20.2基础上添加了1065个patch。
  3. 比Apache Hadoop在兼容性、安全性、稳定性上有增强。第三方发行版通常都经过了大量的测试验证,有众多部署实例,大量的运行到各种生产环境。
  4. 版本更新快。通常情况,比如CDH每个季度会有一个update,每一年会有一个release。
  5. 基于稳定版本Apache Hadoop,并应用了最新Bug修复或Feature的patch
  6. 提供了部署、安装、配置工具,大大提高了集群部署的效率,可以在几个小时内部署好集群。
  7. 运维简单。提供了管理、监控、诊断、配置修改的工具,管理配置方便,定位问题快速、准确,使运维工作简单,有效。

缺点:

  1. 涉及到厂商锁定的问题。(可以通过技术解决)

转自:http://itindex.net/detail/51484-%E8%87%AA%E5%AD%A6-%E5%A4%A7%E6%95%B0%E6%8D%AE-%E7%94%9F%E4%BA%A7

更多内容请看原作者博客。

二、安装介质准备

安装介质准备和安装部分主要参考:http://blog.csdn.net/shawnhu007/article/details/52579204,对其内容进行少许补充以做到能傻瓜安装的目的。

我们采用离线安装的方式,需要下载CDH离线安装包和相关组件:

介质下载和安装部分主要参考:http://blog.csdn.net/shawnhu007/article/details/52579204

在线安装请参考文章(对网速有较高要求):http://www.cnblogs.com/ee900222/p/hadoop_3.html

三、操作系统准备

准备好三台环境一样的centos7在本地虚拟机VMWare上,Cloudera发行版比起Apache社区版本安装对硬件的要求更高,内存至少10G,不然后面你会遇到各种问题,或许都找不到答案。

本人前2次安装失败就是因为节点分配内存太少,建议对于cloudera-scm-server就需要至少4G的内存,cloudera-scm-agent的内存至少也需要1.5G以上。

3台虚拟机环境如下:

IP地址 主机名 说明
192.168.42.128 CDH1 主节点master,datanode
192.168.42.129 CDH2 datanode
192.168.42.30 CDH3 datanode

四、开始安装前配置和预装软件

可以在VM中先安装1台机器,做完相关配置后再克隆出另外2台机器,以避免在3台机器上的重复配置

  • 安装jdk(每台机器都要) ,首先卸载原有的openJDK
[[email protected]~]$ java -version
[[email protected]~]$ rpm -qa | grep jdk
java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64
java-1.7.0-openjdk-headless-1.7.0.75-2.5.4.2.el7_0.x86_64
[[email protected]~]# yum -y remove java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64
[[email protected]~]# yum -y remove java-1.7.0-openjdk-headless-1.7.0.75-2.5.4.2.el7_0.x86_64
[[email protected]~]# java -version
bash: /usr/bin/java: No such file or directory
[[email protected]~]# rpm -ivh jdk-8u101-linux-x64.rpm
[[email protected]~]# java -version
java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
  • 修改每台节点服务器的有关配置hostname、selinux关闭,防火墙关闭;hostname修改:分别对三台都进行更改,并且注意每台名称和ip,每台都要配上hosts。下面以cdh1为例
[[email protected]~]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=cdh1

[[email protected]~]# vi /etc/hosts
127.0.0.1 localhost.cdh1
192.168.42.128  cdh1
192.168.42.129  cdh2
192.168.42.130  cdh3
  • selinux关闭(所有节点官方文档要求),机器重启后生效。
[[email protected]~]# vi /etc/sysconfig/selinux
SELINUX=disabled
[[email protected]~]#sestatus -v
SELinux status: disabled
表示已经关闭了
  • 关闭防火墙
[[email protected]~]# systemctl stop firewalld
[[email protected]~]# systemctl disable firewalld
rm ‘/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service‘
rm ‘/etc/systemd/system/basic.target.wants/firewalld.service‘
[[email protected]~]# systemctl status firewalld
firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled)
   Active: inactive (dead)
  • NTP服务器配置(用于3个节点间实现时间同步)
[[email protected]~]#yum -y install ntp
更改master的节点
[[email protected]~]## vi /etc/ntp.conf
注释掉所有server *.*.*的指向,新添加一条可连接的ntp服务器(我选的本公司的ntp测试服务器)
server 172.30.0.19 iburst
在其他节点上把ntp指向master服务器地址即可(/etc/ntp.conf下)
server 192.168.42.128 iburst
[[email protected]~]## systemctl start ntpd  //启动ntp服务
[[email protected]~]## systemctl status ntpd //查看ntp服务状态
  • SSH无密码登录配置,各个节点都需要设置免登录密码

下面以192.168.42.128到192.168.42.129的免密登录设置举例

[[email protected] /]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
1d:e9:b4:ed:1d:e5:c6:a7:f3:23:ac:02:2b:8c:fc:ca [email protected]
The key‘s randomart image is:
+--[ RSA 2048]----+
|                 |
|           .     |
|          +     .|
|         + +   + |
|        S + . . =|
|       .   . . +.|
|  . o   o   o +  |
|  .o o . .   o + |
|   Eo..   ... . o|
+-----------------+
[[email protected] /]# ssh-copy-id 192.168.42.129
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]192.168.42.129‘s password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh ‘192.168.42.129‘"
and check to make sure that only the key(s) you wanted were added.
  • 安装mysql
    centos7自带的是mariadb,需要先卸载掉
[[email protected] /]# rpm -qa | grep mariadb
mariadb-libs-5.5.41-2.el7_0.x86_64
[[email protected] /]# rpm -e --nodeps mariadb-libs-5.5.41-2.el7_0.x86_64
[[email protected] /]# tar -xvf  MySQL-5.6.24-1.linux_glibc2.5.x86_64.rpm-bundle.tar   //mysql rpm包拷贝到服务器上然后解压
[[email protected] /]# rpm -ivh MySQL-*.rpm  //安装释出的全部rpm
[[email protected] /]# cp /usr/share/mysql/my-default.cnf /etc/my.cnf
[[email protected] /]# vi /etc/my.cnf    //在配置文件中增加以下配置并保存
[mysqld]
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = ‘SET NAMES utf8‘
character-set-server = utf8

[[email protected] /]# yum install -y perl-Module-Install.noarch
[[email protected] /]# /usr/bin/mysql_install_db   //初始化mysql
[[email protected] /]# service mysql restart       //启动mysql
 ERROR! MySQL server PID file could not be found!
Starting MySQL... SUCCESS!
[[email protected] /]#  cat /root/.mysql_secret    //查看mysql root初始化密码
# The random password set for the root user at Fri Sep 22 11:13:25 2017 (local time): 9mp7uYFmgt6drdq3
[[email protected] /]#  mysql -u root -p          //登录进行去更改密码
mysql> SET PASSWORD=PASSWORD(‘123456‘);
mysql> update user set host=‘%‘ where user=‘root‘ and host=‘localhost‘;   //允许mysql远程访问
Query OK, 1 row affected (0.05 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

[[email protected] /]#  chkconfig mysql on   //配置开机启动

[[email protected] /]# tar -zcvf mysql-connector-java-5.1.44.tar.gz // 解压mysql-connector-java-5.1.44.tar.gz得到mysql-connector-java-5.1.44-bin.jar
[[email protected] /]# mkdir /usr/share/java // 在各节点创建java文件夹
[[email protected] /]# cp mysql-connector-java-5.1.44-bin.jar /usr/share/java/mysql-connector-java.jar //将mysql-connector-java-5.1.44-bin.jar拷贝到/usr/share/java路径下并重命名为mysql-connector-java.jar

  • 创建数据库
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
 create database monitor DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
grant all on *.* to root@"%" Identified by "123456";

五、安装Cloudera-Manager

//解压cm tar包到指定目录所有服务器都要(或者在主节点解压好,然后通过scp到各个节点同一目录下)

[[email protected] ~]#mkdir /opt/cloudera-manager
[[email protected] ~]# tar -axvf cloudera-manager-centos7-cm5.7.2_x86_64.tar.gz -C /opt/cloudera-manager  

//创建cloudera-scm用户(所有节点)
[[email protected] ~]# useradd --system --home=/opt/cloudera-manager/cm-5.7.2/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm  

//在主节点创建cloudera-manager-server的本地元数据保存目录
[[email protected] ~]# mkdir /var/cloudera-scm-server
[[email protected] ~]# chown cloudera-scm:cloudera-scm /var/cloudera-scm-server
[[email protected] ~]# chown cloudera-scm:cloudera-scm /opt/cloudera-manager

//配置从节点cloudera-manger-agent指向主节点服务器
[[email protected] ~]# vi /opt/cloudera-manager/cm-5.7.2/etc/cloudera-scm-agent/config.ini
将server_host改为CMS所在的主机名即cdh1

//主节点中创建parcel-repo仓库目录
[[email protected] ~]# mkdir -p /opt/cloudera/parcel-repo
[[email protected] ~]# chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo
[[email protected] ~]# cp CDH-5.7.2-1.cdh5.7.2.p0.18-el7.parcel CDH-5.7.2-1.cdh5.7.2.p0.18-el7.parcel.sha manifest.json /opt/cloudera/parcel-repo
注意:其中CDH-5.7.2-1.cdh5.7.2.p0.18-el5.parcel.sha1 后缀要把1去掉

//所有节点创建parcels目录
[[email protected] ~]# mkdir -p /opt/cloudera/parcels
[[email protected] ~]# chown cloudera-scm:cloudera-scm /opt/cloudera/parcels
解释:Clouder-Manager将CDHs从主节点的/opt/cloudera/parcel-repo目录中抽取出来,分发解压激活到各个节点的/opt/cloudera/parcels目录中

//初始脚本配置数据库scm_prepare_database.sh(在主节点上)
[[email protected] ~]# /opt/cloudera-manager/cm-5.7.2/share/cmf/schema/scm_prepare_database.sh mysql -hcdh1 -uroot -p123456 --scm-host cdh1 scmdbn scmdbu scmdbp
说明:这个脚本就是用来创建和配置CMS需要的数据库的脚本。各参数是指:
mysql:数据库用的是mysql,如果安装过程中用的oracle,那么该参数就应该改为oracle。
-cdh1:数据库建立在cdh1主机上面,也就是主节点上面。
-uroot:root身份运行mysql。-123456:mysql的root密码是***。
--scm-host cdh1:CMS的主机,一般是和mysql安装的主机是在同一个主机上,最后三个参数是:数据库名,数据库用户名,数据库密码。

如果报错:
ERROR com.cloudera.enterprise.dbutil.DbProvisioner  - Exception when creating/dropping database with user ‘root‘ and jdbc url ‘jdbc:mysql://localhost/?useUnicode=true&characterEncoding=UTF-8‘
java.sql.SQLException: Access denied for user ‘root‘@‘cdh1‘ (using password: YES)

则参考 http://forum.spring.io/forum/spring-projects/web/57254-java-sql-sqlexception-access-denied-for-user-root-localhost-using-password-yes

运行如下命令:

update user set PASSWORD=PASSWORD(‘123456‘) where user=‘root‘;

GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘cdh1‘ IDENTIFIED BY ‘123456‘ WITH GRANT OPTION;

FLUSH PRIVILEGES;

//启动主节点
[[email protected] ~]# cp /opt/cloudera-manager/cm-5.7.2/etc/init.d/cloudera-scm-server /etc/init.d/cloudera-scm-server
[[email protected] ~]# chkconfig cloudera-scm-server on
[[email protected] ~]# vi /etc/init.d/cloudera-scm-server
CMF_DEFAULTS=${CMF_DEFAULTS:-/etc/default}改为=/opt/cloudera-manager/cm-5.7.2/etc/default
[[email protected] ~]# service cloudera-scm-server start
//同时为了保证在每次服务器重启的时候都能启动cloudera-scm-server,应该在开机启动脚本/etc/rc.local中加入命令:service cloudera-scm-server restart

//启动cloudera-scm-agent所有节点
[[email protected] ~]# mkdir /opt/cloudera-manager/cm-5.7.2/run/cloudera-scm-agent
[[email protected] ~]# cp /opt/cloudera-manager/cm-5.7.2/etc/init.d/cloudera-scm-agent /etc/init.d/cloudera-scm-agent
[[email protected] ~]# chkconfig cloudera-scm-agent on
[[email protected] ~]# vi /etc/init.d/cloudera-scm-agent
CMF_DEFAULTS=${CMF_DEFAULTS:-/etc/default}改为=/opt/cloudera-manager/cm-5.7.2/etc/default
[[email protected] ~]# service cloudera-scm-agent start
//同时为了保证在每次服务器重启的时候都能启动cloudera-scm-agent,应该在开机启动脚本/etc/rc.local中加入命令:service cloudera-scm-agent restart
时间: 2024-08-30 12:28:56

CDH5.7Hadoop集群搭建(离线版)的相关文章

JAVAEE——宜立方商城08:Zookeeper+SolrCloud集群搭建、搜索功能切换到集群版、Activemq消息队列搭建与使用

1. 学习计划 1.solr集群搭建 2.使用solrj管理solr集群 3.把搜索功能切换到集群版 4.添加商品同步索引库. a) Activemq b) 发送消息 c) 接收消息 2. 什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud.当一个系统的索引数据量少的时候是不需要使用SolrCloud的,当索引量很大,搜索请求并发很高,这时需要使用SolrCloud来满足这些需求. So

[Golang] kafka集群搭建和golang版生产者和消费者

一.kafka集群搭建 至于kafka是什么我都不多做介绍了,网上写的已经非常详尽了. 1. 下载zookeeper  https://zookeeper.apache.org/releases.html 2. 下载kafka http://kafka.apache.org/downloads 3. 启动zookeeper集群(我的示例是3台机器,后面的kafka也一样,这里就以1台代指3台,当然你也可以只开1台) 1)配置zookeeper. 修改复制一份 zookeeper-3.4.13/c

rabbitmq 集群搭建 单机多实例版

rabbitmq 是一个开源的AMQP实现,用ERLANG编写,由于erlang天生支持分布式高并发的语言,这也是rabbitmq被许多开发者所喜爱. AMQP概念,这里不做介绍,可以google一下,概念很重要,概念很重要,概念很重要,重要的事说三遍. 下面开始集群搭建,rabbitmq集群分为单机,伪集群(单机多实例),集群(多机多实例),很多开发者想自己搭建一个集群,来测试一些mq特性. 本文主要介绍伪集群方式,也就是在一台虚拟机上,搭建rabbitmq多实例,然后建立集群连接.而正规集群

CDH集群搭建步骤

CDH集群搭建步骤详细文档 一.关于CDH和Cloudera Manager CDH (Cloudera's Distribution,including Apache Hadoop),是Hadoop众多分支中的一种,由Cloudera维护,基于稳定版本的Apache Hadoop构建,并集成了很多补丁,可直接用于生产环境. Cloudera Manager则是为了便于在集群中进行Hadoop等大数据处理相关的服务安装和监控管理的组件,对集群中主机.Hadoop.Hive.Spark等服务的安装

Redis Cluster集群搭建与应用

1.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper,但从redis 3.0之后版本支持redis-cluster集群,redis-cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接.其redis-cluster架构图如下: 其结构特点 所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽. 节点的fail是通过集群中超过半数的节点检测失效时才生效. 客户端与redis节点直

Cloudera CDH 5集群搭建(yum 方式)

1      集群环境 主节点 master001 ~~ master006 从节点 slave001 ~~ slave064 2      安装CDH5的YUM源 rpm -Uvhhttp://archive.cloudera.com/cdh5/one-click-install/redhat/6/x86_64/cloudera-cdh-5-0.x86_64.rpm 或 wgethttp://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/cloud

KAFKA集群搭建

一.简介 Kafka是Apache下的一个子项目,是一个高性能跨语言分布式发布/订阅消息队列系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Cloudera.Apache Storm.Spark都支持与Kafka集成.   Kafka适合做什么? 官方文档介绍,它通常被使用在两大类应用中: 搭建实时数据流管道,在系统或应用之间可靠的获取数据 搭建对数据流进行转换或相应的实时流应用程序.   为了了解Kafka具体如何实现这些功能, 首先理解几个概

主从集群搭建及容灾部署redis

redis主从集群搭建及容灾部署(哨兵sentinel) Redis也用了一段时间了,记录一下相关集群搭建及配置详解,方便后续使用查阅. 提纲 l  Redis安装 l  整体架构 l  Redis主从结构搭建 l  Redis容灾部署(哨兵sentinel) l  Redis常见问题 Redis安装 发行版:CentOS-6.6 64bit 内核:2.6.32-504.el6.x86_64 CPU:intel-i7 3.6G 内存:2G 下载redis,选择合适的版本 [[email prot

集群hadoop ubuntu版

搭建ubuntu版hadoop集群 用到的工具:VMware.hadoop-2.7.2.tar.jdk-8u65-linux-x64.tar.ubuntu-16.04-desktop-amd64.iso 1.  在VMware上安装ubuntu-16.04-desktop-amd64.iso 单击"创建虚拟机"è选择"典型(推荐安装)"è单击"下一步" è点击完成 修改/etc/hostname vim hostname 保存退出 修改etc/h