CDH5.4.7安装分布式Hadoop集群

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 应用场景 部署Hadoop集群过程中,可以使用开源的Apache Hadoop或者可以用CDH【国外的一家公司基于开源的封装的】,搭建更加方便,方便扩充节点规模,组件管控,性能监控等等,但是也有一个弊端,针对组件安装的目录,以及生成的配置文件位置比较难找到,目录结构混乱,所以还是请慎用。

应用场景

部署Hadoop集群过程中,可以使用开源的Apache Hadoop或者可以用CDH【国外的一家公司基于开源的封装的】,搭建更加方便,方便扩充节点规模,组件管控,性能监控等等,但是也有一个弊端,针对组件安装的目录,以及生成的配置文件位置比较难找到,目录结构混乱,所以还是请慎用。

操作步骤

1. 概述

CM: Cloudera Manager (Cloudera公司专有的Hadoop集群管控平台) 。 CDH: Cloudera Distributed Hadoop(Cloudera公司重新打包发布的Hadoop版本) 。

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。

Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。

2. 系统环境

这里写图片描述

节点 IP地址 系统 作用
namenode1 10.231.224.60 CentOS6.5 集群主节点,管理集群任务执行,存储
namenode2 10.231.224.61 CentOS6.5 主节点的备份节点,主节点失效,接管服务
datanode1 10.231.224.64 CentOS6.5 数据节点
datanode2 10.231.224.65 CentOS6.5 数据节点
datanode3 10.231.224.66 CentOS6.5 数据节点
datanode4 10.231.224.67 CentOS6.5 数据节点

3. 基础安装及配置

3.1 修改hostname和hosts文件(各个节点)

修改各个节点的hostname,已便于区分各个节点,同时方便下面配置免密码SSH互信操作。

 # vim /etc/sysconfig/network

根据上文中的节点环境,将各个节点的hostname,修改为与上文对应,便于区分。
修改后,重启(注:重启生效)

这里写图片描述

修改hosts文件。

 # vim /etc/hosts

每个节点都需要操作。

这里写图片描述

3.2 关闭防火墙和SELinux(各个节点)

关闭防火墙,并且设置为开机不启动。

 # service iptables stop
 # chkconfig iptables off

关闭SELinux。

 # vim /etc/selinux/config

将SELINUX修改为disabled。

重启。

3.3 配置SSH操作

配置ssh互信的核心思想如下:
1.首先,在要配置互信的机器上,生成各自的经过认证的key文件;
2.其次,将所有的key文件汇总到一个总的认证文件中;
3.将这个包含了所有互信机器认证key的认证文件,分发到各个机器中去;
4.验证互信。

在主机名为namenode1,namenode2,datanode1,datanode2,datanode3,datanode4的节点间创建ssh互信。

在每个节点上创建 RSA密钥和公钥,输入如下命令,一路回车

 # mkdir ~/.ssh (如果目录存在,就不必要创建)
 # chmod  700 ~/.ssh 
 # cd ~/.ssh 
 # ssh-keygen -t rsa 
整合公钥文件 
在namenode1节点上执行以下命令: 

 # cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
 # ssh namenode2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
 # ssh datanode1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
 # ssh datanode2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
 # ssh datanode3 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
 # ssh datanode4 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
 # chmod 600 ~/.ssh/authorized_keys
分发整合后的公钥文件 
在namenode1节点上执行以下命令 

 # scp ~/.ssh/authorized_keys  namenode2:~/.ssh/ 
 # scp ~/.ssh/authorized_keys  datanode1:~/.ssh/
 # scp ~/.ssh/authorized_keys  datanode2:~/.ssh/ 
 # scp ~/.ssh/authorized_keys  datanode3:~/.ssh/
 # scp ~/.ssh/authorized_keys  datanode4:~/.ssh/   
测试ssh互信 
在各个节点上运行以下命令,若不需要输入密码就显示系统当前日期,就说明SSH互信已经配置成功了。
在namenode1节点上输入以下命令: 

 # ssh namenode2 date 
 # ssh datanode1 date 
 # ssh datanode2 date 
 # ssh datanode3 date
 # ssh datanode4 date

3.4 配置集群NTP服务(各个节点)

NTP可以使用yum直接安装

 # yum install -y  ntp

每台机器安装ntp与ntpdate:

 # service ntpd start           
 # chkconfig ntpd on
 # chkconfig --list ntpd             ##检查是否ntp开启,命令结果,2-5是启用

与主控机同步,先配置主控机的时间与实际时间符合,然后搭建时间服务器并进行同步,步骤如下:

1)配置NTP主机端  

 # vim  /etc/ntp.conf

 加入以下内容:

  restrict 172.19.21.0 mask 255.255.255.0 nomodify notrap  # 允许内网其他机器同步时间
  server 127.127.1.0                 # 外部时间服务器不可用时,以本地时间作为时间服务
  fudge  127.127.1.0 stratum 10           


 # service ntpd restart
 # ntpstat ##查看验证
2)配置NTP客户端

 # vim  /etc/ntp.conf 

注释带server字眼行部分内容                   
添加 server 主机名或ip 如:server 10.231.224.60

 # service ntpd restart
 # ntpstat ####查看验证

 # ntpdate -u 10.231.224.60

3.5 安装JDK(各个节点)

这里用的是jdk1.7

卸载原有JDK
 # yum remove java

将下载的JDK安装包,拷贝到/usr/local目录下,进行解压缩,把解压缩后的文件夹名改为java。
 # cd /usr/local

修改profile配置文件。
 # vim /etc/profile

在末尾加上如下3行配置:
  export JAVA_HOME=/usr/local/java
  export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  export PATH=$JAVA_HOME/bin:$PATH

使修改的配置文件生效:
 # source /etc/profile

验证:
 # java -version

3.6 安装mysql(主节点namenode1)

安装:
Centos 6.5下安装Mysql很简单,
 # yum list mysql-server

当只有一个时候就可以直接
 # yum install mysql-server
进行安装

过程中选择Y继续安装,最后安装成功
 # service mysqld start

配置:
设置Mysql开机启动
 # chkconfig mysqld on

连接mysql数据库
 # mysql

设置密码
  mysql>use mysql;
  mysql>update user set password=password('gtxd1234') where user='root';
  mysql>flush privileges;

以后连接mysql数据库就要用如下命令:
 # mysql -uroot -pgtxd1234



创建数据库:
创建以下数据库:
 create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;      --hive数据库
 create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;    --集群监控数据库
 create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;       --hue数据库
 create database Oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;     -oozie数据库

设置root授权访问以上所有的数据库:
  grant all privileges on *.* to root@'%' identified by 'gtxd1234' with grant option;
  flush privileges;

 # service mysqld restart

4. 安装Cloudera Manager 5(cm5)

cm5下载地址

根据自己的系统选择相应的版本,本次安装选用的是cloudera-manager-el6-cm5.4.7_x86_64.tar.gz。下载完成后只上传到master(namenode1)节点即可。然后解压到/opt目录下,不能解压到其他地方,因为cdh5的源会默认在/opt/cloudera/parcel-repo寻找,怎么制作cdh5的本地源文件会在之后介绍。

给所有节点添加cloudera-scm用户:(各个节点)

 # useradd --system --home=/opt/cm-5.4.7/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm

修改/opt/cm-5.4.7/etc/cloudera-scm-agent/config.ini 下面的serer_host

 # server_host=namenode1

为Cloudera Manager 5建立数据库:

 # /opt/cm-5.4.7/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -pgtxd1234 --scm-host localhost scm scm scm

格式是:scm_prepare_database.sh 数据库类型  数据库 服务器 用户名 密码  –scm-host  Cloudera_Manager_Server所在的机器,后面那三个不知道代表什么,直接照抄官网的了。 因为我们用的是Mysql数据库,所以我们需要下载Mysql的JDBC驱动,本次从官网上下载最新稳定版:mysql-connector-java-5.1.30.tar.gz,解压之后找到mysql-connector-java-5.1.30-bin.jar放到/opt/cm-5.4.7/share/cmf/lib/目录下。 开启Cloudera Manager 5 Server端:

 # /opt/cm-5.0.0/etc/init.d/cloudera-scm-server start

注意server首次启动不要立即关闭或重启,因为首次启动会自动创建相关表以及数据,如果因为特殊原因中途退出,请先删除所有表以及数据之后再次启动,否则将会出现启动不成功的情况。 开启Cloudera Manager 5 Agents端。 先scp /opt/cm-5.4.7到所有datanode节点上,然后在每台机器上开启Agents端:

 # scp -r  /opt/cm-5.4.7 datanode1:/opt/cm-5.4.7

等待拷贝成功,在所有datanode节点上启动:(注意必须以管理员权限启动)

 # sudo /opt/cm-5.4.7/etc/init.d/cloudera-scm-agent start

浏览器启动Cloudera Manager 5 控制台(默认端口号是7180),启动成功就会看到登陆页面。(登录用户名admin,密码admin)

这里写图片描述

5. 安装CDH5

先下载到本地

这里需要下载三样东西,首先是与自己系统版本相对应的parcel包,然后是manifest.json文件。下载完成后将这三个文件放到master节点的/opt/cloudera/parcel-repo下(目录在安装Cloudera Manager 5时已经生成),注意目录一个字都不能错,另外需要做一个小的修改,就是将.sha1文件,修改为.sha。

打开http://10.231.224.60:7180,登陆控制台,默认账户和密码都是admin,安装时选择免费版,之后由于cm5对中文的支持很强大,按照提示安装即可,如果系统配置有什么问题在安装过程中会有提示,根据提示给系统安装组件就可以了。

如果在安装时选择了安装Hive,可能会遇到安装失败的问题,查看一下日志发现时安装Hive时需要安装JDBC驱动,所以同样我们将Mysql的驱动包拷贝到/opt/cloudera/parcels/CDH-5.4.7-1.cdh5.4.7.p0.3/lib/hive/lib/目录下,之后再继续安装就不会遇到问题了。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
204 6
|
12天前
|
存储 SpringCloudAlibaba Java
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论。
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
|
2月前
|
存储 分布式计算 负载均衡
分布式计算模型和集群计算模型的区别
【10月更文挑战第18天】分布式计算模型和集群计算模型各有特点和优势,在实际应用中需要根据具体的需求和条件选择合适的计算架构模式,以达到最佳的计算效果和性能。
83 2
|
3月前
|
SQL 分布式计算 Hadoop
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
45 3
|
3月前
|
分布式计算 Hadoop Shell
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
68 3
|
2月前
|
存储 监控 大数据
构建高可用性ClickHouse集群:从单节点到分布式
【10月更文挑战第26天】随着业务的不断增长,单一的数据存储解决方案可能无法满足日益增加的数据处理需求。在大数据时代,数据库的性能、可扩展性和稳定性成为企业关注的重点。ClickHouse 是一个用于联机分析处理(OLAP)的列式数据库管理系统(DBMS),以其卓越的查询性能和高吞吐量而闻名。本文将从我的个人角度出发,分享如何将单节点 ClickHouse 扩展为高可用性的分布式集群,以提升系统的稳定性和可靠性。
164 0
|
3月前
|
NoSQL Java Redis
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
Redis分布式锁在高并发场景下是重要的技术手段,但其实现过程中常遇到五大深坑:**原子性问题**、**连接耗尽问题**、**锁过期问题**、**锁失效问题**以及**锁分段问题**。这些问题不仅影响系统的稳定性和性能,还可能导致数据不一致。尼恩在实际项目中总结了这些坑,并提供了详细的解决方案,包括使用Lua脚本保证原子性、设置合理的锁过期时间和使用看门狗机制、以及通过锁分段提升性能。这些经验和技巧对面试和实际开发都有很大帮助,值得深入学习和实践。
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
|
1月前
|
存储 NoSQL Java
使用lock4j-redis-template-spring-boot-starter实现redis分布式锁
通过使用 `lock4j-redis-template-spring-boot-starter`,我们可以轻松实现 Redis 分布式锁,从而解决分布式系统中多个实例并发访问共享资源的问题。合理配置和使用分布式锁,可以有效提高系统的稳定性和数据的一致性。希望本文对你在实际项目中使用 Redis 分布式锁有所帮助。
104 5
|
2月前
|
NoSQL Java 数据处理
基于Redis海量数据场景分布式ID架构实践
【11月更文挑战第30天】在现代分布式系统中,生成全局唯一的ID是一个常见且重要的需求。在微服务架构中,各个服务可能需要生成唯一标识符,如用户ID、订单ID等。传统的自增ID已经无法满足在集群环境下保持唯一性的要求,而分布式ID解决方案能够确保即使在多个实例间也能生成全局唯一的标识符。本文将深入探讨如何利用Redis实现分布式ID生成,并通过Java语言展示多个示例,同时分析每个实践方案的优缺点。
70 8
|
2月前
|
NoSQL Redis
Redis分布式锁如何实现 ?
Redis分布式锁通过SETNX指令实现,确保仅在键不存在时设置值。此机制用于控制多个线程对共享资源的访问,避免并发冲突。然而,实际应用中需解决死锁、锁超时、归一化、可重入及阻塞等问题,以确保系统的稳定性和可靠性。解决方案包括设置锁超时、引入Watch Dog机制、使用ThreadLocal绑定加解锁操作、实现计数器支持可重入锁以及采用自旋锁思想处理阻塞请求。
61 16