Cloudera Hadoop完全分布式部署
来源:互联网 发布:网络电视4k是什么意思 编辑:程序博客网 时间:2024/06/05 02:35
Hadoop和大数据:
首先,简单概括一下,云计算和大数据之间的关系。在很大程度上它们是相辅相成的,最大的不同在于,云计算是你在做的事儿,而大数据是你所拥有的东西。以云计算为基础的信息存储、分享和挖掘手段为知识生产提供了工具,而通过对大数据分析、预测会使得决策更加精准,两者相得益彰。从另外一个角度去看,云计算是一种IT理念、技术架构和标准,而云计算不可避免会产生大数据。所以,大数据是云计算的延伸。
2003、2004和2006年,谷歌先后发表了GFS、MapReduce和BigTable三篇论文,分别对应了Hadoop中的铁三角三驾马车HDFS、MapReduce和Hbase,以Hadoop代表的开源技术框架迅速成为互联网数据处理的技术生态圈潮流。
Hadoop是什么?
Hadoop是Apache用Java实现的处理大规模数据的分布式计算解决方案平台。其框架最核心的设计就是存储和计算:HDFS和MapRedurce。HDFS为海量的数据提供存储,则Mapdurce为海量的数据提供了计算能力。
我们常常遇到这样的问题,本地硬盘数据读取非常慢,写入更加慢,何况在大数据时代呢。很简单的一个办法就是从多个硬盘读取,假设有100个1T硬盘,每个硬盘存储1%的数据,并行读取,不到两分钟可以读取完。而且每个硬盘的每份数据实行冗余备份。基于100个硬盘的分布式存储,自然而然就可以把一个运算的项目进行100次的分而治之,再把结果整合。这就是Hadoop的核心,存储和计算,分别对应HDFS和MapReduce。
HDFS:Hadoop应用程序中主要的分布式储存系统, HDFS集群包含了一个NameNode(主节点),这个节点负责管理所有文件系统的元数据及存储了真实数据的DataNode(数据节点,可以有很多)。HDFS的特点可以用一句话概括,在廉价机器上以流式访问模式冗余存储大数据文件。
MapReduce(并行计算架构),Map将计算任务拆分成大量独立运行的子任务,接着并行运算,Reduce负责汇总执行结果。
Hive(Hadoop编程)是一个构建在Hadoop基础设施之上的静态数据仓库,通过Hive可以使用类SQL语言查询存放在HDFS上的数据。类SQL语言最终转化成Map/Reduce,虽然Hive提供了SQL查询功能,但是Hive不能进行实时交互增删改查。
HBase(Hadoop数据库)是一种Nosql的Key/Value结构,运行在HFDFS架构上的基于列存储的数据库。它和Hive是基于Hadoop的不同技术实现,和Hive不一样,Hbase能在它的数据库上实时增删改查。Hbase利用Hadoop的基础设施,可以利用通用的设备进行水平的扩展。 而且其不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库,所谓非结构化数据存储就是说HBase是基于列的而不是基于行的模式,这样方面读写你的大数据内容。
ZooKeeper(系统管理架构)是Google的开源实现,针对大型分布式系统的可靠协调系统,提供配置维护、名字服务、 分布式同步、组服务等,目标是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
CDH:Hadoop发行版:
CDH (Cloudera's Distribution Hadoop),是Hadoop众多分支的一种,由Cloudera维护,基于稳定版本的Apache Hadoop构建,并集成了很多补丁,可直接用于生产环境。Cloudera Manager则是为了便于在集群中进行Hadoop等大数据处理相关的服务安装和监控管理的组件,对集群中主机、Hadoop、Hive、Spark等服务的安装配置管理做了极大简化。
官方文档地址:https://www.cloudera.com/documentation.html
Cloudera-Manager下载地址:http://archive.cloudera.com/cm5
Cloudera Parcel 下载地址:http:archive.cloudera.com/cdh5
官方共给出了多种安装方式:第一种方法必须要求所有机器都能连网,由于最近各种国外的网站被墙的厉害,我尝试了几次各种超时错误,巨耽误时间不说,一旦失败,重装非常痛苦。另一种离线安装,对系统侵入性最小,而且重装什么的都非常方便。后期的集群统一包升级也非常好。这也是我之所以选择离线安装的原因。
Hadoop启动模式有三种:
(1)、单机模式:默认情况下,运行为一个单独机器上的独立Java进程,主要用于调试环境;
(2)、伪分布式:单个机器上的模拟分布式多节点环境,每一个Hadoop守护进程作为一个独立的Java进程去运行;
(3)、完全分布式模式:真实的生产环境,搭建在完全分布式的集群环境中;
在生产环境中,PC Server第一选择,云主机第二选择,这里选择云主机。百万级别的小型机不选择,违背了Hadoop的初衷,低廉分布式。
我这里使用阿里云的三台主机来实例搭建CDH完全分布式集群:
178.18.27.22 NameNode 1核4GB Centos6.8 管理节点
178.18.27.18 DataNode1 1核1GB Centos6.8 计算节点
178.18.27.23 DataNode2 1核1GB Centos6.8 计算节点
1、在NameNode、DataNode1、DataNode2上的hosts文件上添加:
178.18.27.22 NameNode
178.18.27.18 DataNode1
178.18.27.23 DataNode2
2、关闭防火墙以及SElinux,hadoop用户无密码登陆,进并且行NTP同步:
对NameNode设置:
[root@NameNode ~]# chkconfig --list|grep iptables
iptables 0:off1:off2:on3:on4:on5:on6:off
iptables 0:off1:off2:on3:on4:on5:on6:off
[root@NameNode ~]# chkconfig iptables off
[root@NameNode ~]# chkconfig --list|grep iptables
iptables 0:off1:off2:off3:off4:off5:off6:off
[root@NameNode ~]# chkconfig --list|grep iptables
iptables 0:off1:off2:off3:off4:off5:off6:off
[root@NameNode ~]# service iptables status
iptables: Firewall is not running.
iptables: Firewall is not running.
同样,对DataNode1和DataNode2也是相同设置:
[root@DataNode1 ~]# service iptables status
iptables: Firewall is not running.
iptables: Firewall is not running.
[root@DataNode2 ~]# service iptables status
iptables: Firewall is not running.
iptables: Firewall is not running.
创建Hadoop用户,并且赋予Hadoop用户sudo权限:
[root@NameNode ~]# vim /etc/sudoers
root ALL=(ALL) ALL
hadoop ALL=(root)NOPASSRD:ALL
hadoop ALL=(root)NOPASSRD:ALL
配置Hadoop用户无密码登陆。
3、下载安装前所需要的组件:
首先,下载cloudera-manager.repo
[root@NameNode ~]# vim /etc/yum.repos.d/cloudera-manager.repo
[cloudera-manager]
name = Cloudera Manager, Version 5.7.6
baseurl = https://archive.cloudera.com/cm5/redhat/6/x86_64/cm/5.7.6/
gpgkey = https://archive.cloudera.com/redhat/cdh/RPM-GPG-KEY-cloudera
gpgcheck = 1
其次,http://archive.cloudera.com/cm5/redhat/6/x86_64/cm/5.7.6/RPMS/x86_64/下载所有的RPM包。
接着,下载cloudera-manager-installer.bin。http://archive.cloudera.com/cm5/installer/5.7.6/
再接着下载Parcel包(CDH的Hadoop集群),一共三个文件,然后把41K大小的CDH-5.7.6-1.cdh5.7.6.p0.6-el6.sha1文件改成sha即可。http://archive.cloudera.com/cdh5/parcels/5.7.6/
[root@NameNode ~]# yum install mysql mysql-server mysql-devel
[root@NameNode ~]# chkconfig mysqld on
[root@NameNode ~]# service mysqld restart
#创建Hive数据库
mysql> create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
# 安装oozie
mysql> create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
mysql> create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#授权root用户在主节点拥有访问所有数据库的权限
mysql> grant all privileges on *.* to 'root'@'NameNode' identified by 'xxxx' with grant option;
# 刷新:
mysql> flush privileges;
4、安装Cloudera-Manager管理器:
首先,在NameNode节点上,启动安装命令:
[root@NameNode ~]# chmod +x cloudera-manager-installer.bin
[root@NameNode ~]# ./cloudera-manager-installer.bin
接着是不断Next和Yes即可,如无报错,安装成功。
5、安装Cloudera Hadoop集群:
在浏览器输入:NameNode的IP地址+7180即可访问Web安装页面。登陆的用户名和密码都是:admin。
当看到是否需要安装JDK的时候,选择跳过,因为已经安装了Oracel JDK了。
选择SSH登陆凭据:
这是系统自动寻找的parcel-repo的位置,所以前面要做好准备,就是把parcel包放到/opt/cloudera/parcel-repo中。
安装Parcel包完成:
集群安装前的状态:
[root@NameNode ~]# echo never > /sys/kernel/mm/transparent_hugepage/defrag
然后把条命令加进去/etc/rc.local。
下面是集群安装选项,选择自定义,一开始可以先安装HDFS和YARM。
集群自定义角色分配:
NameNode:安装HDFS NameNode、HDFS Secondary NameNode、HDFS Blancer、Cloudera Manager Service Host Monitor、
Yarm Resourcemanager、YARM Job History Server。
DataNode【1-2】:安装HDFS DataNode、YARM NodeManager。
集群数据库的设置,点击“测试连接”,测试完成后“继续”:
6、成功安装CDH:
重新启动cloudera-scm-server:
[root@NameNode ~]# service cloudera-scm-server restart
Stopping cloudera-scm-server: [ OK ]
Starting cloudera-scm-server: [ OK ]
Stopping cloudera-scm-server: [ OK ]
Starting cloudera-scm-server: [ OK ]
重新启动cloudera-scm-server:
[root@NameNode ~]# service cloudera-scm-agent restart
Stopping cloudera-scm-agent: [ OK ]
Starting cloudera-scm-agent: [ OK ]
[root@NameNode ~]# service cloudera-scm-agent restart
Stopping cloudera-scm-agent: [ OK ]
Starting cloudera-scm-agent: [ OK ]
初始化以后,进入CDH的主界面,重启集群Cluser1:
这里可能会出现无法发出查询:对 Service Monitor 的请求超时的错误提示,如果各个组件安装没有问题,一般是因为服务器比较卡导致的,过一会刷新一下页面就好了:
如果在CDH运行中出现某些难以判断的问题,记得看/var/下的日志,看日志,看日志。
如果要为集群添加服务,点击添加,然后选择,例如,安装oozie。
7、Hadoop简单命令:
Hadoop相关服务安装目录:/opt/cloudera/parcels/CDH/
所有jar包所在目录:/opt/cloudera/parcels/CDH/jars
CM agent的配置目录:/etc/cloudera-scm-agent/
CM server的配置目录:/etc/cloudera-scm-server/
CM日志目录:/var/log/cloudera-scm-*
Hadoop客户端配置目录:/etc/hadoop/*
查看Cloudera Hadoop版本:
[root@NameNode ~]# hadoop version
查看Cloudera Hadoop的根目录:
[root@NameNode ~]# hadoop fs -ls /
查看HDFS的大小:
进入Hive界面:
[root@NameNode ~]# hive shell
进入Hbase界面:
[root@NameNode ~]# hbase shell
配置Java目录并且jps查看进程:
[root@NameNode ~]# vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera
export PATH=$PATH:$JAVA_HOME/bin
export PATH=$PATH:$JAVA_HOME/bin
8、WordCount测试:
[root@NameNode ~]# sudo -u hdfs hadoop fs -put /etc/hadoop/conf/*.xml /wenzhiyi/input
[root@NameNode ~]# sudo -u hdfs hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar wordcount /wenzhiyi/input /wenzhiyi/output/
17/07/31 17:49:28 INFO client.RMProxy: Connecting to ResourceManager at NameNode/172.18.27.22:8032 17/07/31 17:49:29 INFO input.FileInputFormat: Total input paths to process : 5 17/07/31 17:49:29 INFO mapreduce.JobSubmitter: number of splits:5 17/07/31 17:49:29 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1501486141748_0003 17/07/31 17:49:29 INFO impl.YarnClientImpl: Submitted application application_1501486141748_0003 17/07/31 17:49:29 INFO mapreduce.Job: The url to track the job: http://NameNode:8088/proxy/application_1501486141748_0003/ 17/07/31 17:49:29 INFO mapreduce.Job: Running job: job_1501486141748_0003 17/07/31 17:49:39 INFO mapreduce.Job: Job job_1501486141748_0003 running in uber mode : false 17/07/31 17:49:39 INFO mapreduce.Job: map 0% reduce 0% 17/07/31 17:49:45 INFO mapreduce.Job: map 20% reduce 0% 17/07/31 17:49:51 INFO mapreduce.Job: map 40% reduce 0% 17/07/31 17:49:57 INFO mapreduce.Job: map 60% reduce 0% 17/07/31 17:50:03 INFO mapreduce.Job: map 80% reduce 0% 17/07/31 17:50:09 INFO mapreduce.Job: map 100% reduce 0% 17/07/31 17:50:15 INFO mapreduce.Job: map 100% reduce 100% 17/07/31 17:50:15 INFO mapreduce.Job: Job job_1501486141748_0003 completed successfully 17/07/31 17:50:15 INFO mapreduce.Job: Counters: 49 File System Counters FILE: Number of bytes read=3502 FILE: Number of bytes written=729548 FILE: Number of read operations=0 FILE: Number of large read operations=0 FILE: Number of write operations=0 HDFS: Number of bytes read=14696 HDFS: Number of bytes written=8473 HDFS: Number of read operations=18 HDFS: Number of large read operations=0 HDFS: Number of write operations=2 Job Counters Launched map tasks=5 Launched reduce tasks=1 Data-local map tasks=5 Total time spent by all maps in occupied slots (ms)=23706 Total time spent by all reduces in occupied slots (ms)=4860 Total time spent by all map tasks (ms)=23706 Total time spent by all reduce tasks (ms)=4860 Total vcore-seconds taken by all map tasks=23706 Total vcore-seconds taken by all reduce tasks=4860 Total megabyte-seconds taken by all map tasks=24274944 Total megabyte-seconds taken by all reduce tasks=4976640 Map-Reduce Framework Map input records=521 Map output records=542 Map output bytes=14797 Map output materialized bytes=4721 Input split bytes=573 Combine input records=542 Combine output records=254 Reduce input groups=198 Reduce shuffle bytes=4721 Reduce input records=254 Reduce output records=198 Spilled Records=508 Shuffled Maps =5 Failed Shuffles=0 Merged Map outputs=5 GC time elapsed (ms)=489 CPU time spent (ms)=2870 Physical memory (bytes) snapshot=1984499712 Virtual memory (bytes) snapshot=9045495808 Total committed heap usage (bytes)=1437683712 Shuffle Errors BAD_ID=0 CONNECTION=0 IO_ERROR=0 WRONG_LENGTH=0 WRONG_MAP=0 WRONG_REDUCE=0 File Input Format Counters Bytes Read=14123 File Output Format Counters Bytes Written=8473
阅读全文
0 0
- Cloudera Hadoop完全分布式部署
- cloudera 部署Hadoop
- Hadoop集群完全分布式模式环境部署
- Hadoop 2.X 完全分布式部署安装
- Hadoop集群完全分布式模式环境部署
- Ambari部署hadoop完全分布式集群
- Hadoop集群完全分布式模式环境部署
- Hadoop集群完全分布式模式环境部署
- Hadoop 2.X 完全分布式部署安装
- Hadoop集群完全分布式模式环境部署
- Hadoop + HBase + Hive 完全分布式部署笔记
- Hadoop集群完全分布式模式环境部署
- Hadoop完全分布式部署---Hadoop学习笔记(3)
- [参考]Hadoop集群完全分布式模式环境部署
- hadoop完全分布式部署无法访问namenode的8020端口解决方案
- Zookeeper部署完全分布式
- hadoop集群环境部署之cloudera
- 使用Cloudera部署,管理Hadoop集群
- 返回的json双引号带有转义字符
- 第三方App接入微信登录 解读
- 全面了解flex的用途
- LeetCode
- 用Apache Spark进行大数据处理——第一部分:入门介绍
- Cloudera Hadoop完全分布式部署
- 初学者学习机器学习的资料选择
- 素数求和
- EJB到底是什么?
- 特殊密码锁
- SourceInsight4.0破解方法
- 进出的动画
- java中的代理模式
- vue需要了解的一些概念