首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

大数据存储技术(1)—— Hadoop简介及安装配置

  • 25-03-03 07:41
  • 4579
  • 10207
blog.csdn.net

目录

一、Hadoop简介

(一)概念

(二)Hadoop发展历史

(三)Hadoop三大发行版本

(四)Hadoop的优势 

二、Hadoop的组成 

(一)Hadoop1.x和Hadoop2.x的区别​编辑

(二)Hadoop的三种运行模式

(三)HDFS架构概述

(四)YARN架构概述

(五)MapReduce架构概述

(六)大数据技术生态体系 

三、Hadoop安装配置

(一)虚拟机环境准备

(二)安装JDK

(三)安装Hadoop

(四)配置伪分布式Hadoop集群


一、Hadoop简介

(一)概念

1、Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
2、主要解决,海量数据的存储和海量数据的分析计算问题。
3、广义上来说,Hadoop通常是指一个更广泛的概念——Hadoop生态圈。

(二)Hadoop发展历史

1、Lucene框架是Doug Cutting开创的开源软件,用Java书写代码,实现与Google类似的全文搜索功能,它提供了全文检索引擎的架构,包括完整的查询引擎和索引引擎。

2、2001年年底Lucene成为Apache基金会的一个子项目。
3、对于海量数据的场景,Lucene面对与Google同样的困难,存储数据困难,检索速度慢。
4、学习和模仿Google解决这些问题的办法:微型版Nutch。
5、可以说Google是Hadoop的思想之源(Google在大数据方面的三篇论文)
        GFS --->HDFS
        Map-Reduce --->MR
        BigTable --->HBase
6、2003-2004年,Google公开了部分GFS和MapReduce思想的细节,以此为基础Doug Cutting等人用了2年业余时间实现了DFS和MapReduce机制,使Nutch性能飙升。
7、2005年Hadoop作为Lucene的子项目Nutch的一部分正式引入Apache基金会。
8、2006年3月份,Map-Reduce和Nutch Distributed File System (NDFS)分别被纳入到Hadoop项目中,Hadoop就此正式诞生,标志着大数据时代来临。
9、名字来源于Doug Cutting儿子的玩具大象,如图。

(三)Hadoop三大发行版本

Hadoop三大发行版本:Apache、Cloudera、Hortonworks。
        Apache版本最原始(最基础)的版本,对于入门学习最好。
        Cloudera在大型互联网企业中用的较多。
        Hortonworks文档较好。
1. Apache Hadoop
官网地址:http://hadoop.apache.org/releases.html
下载地址:https://archive.apache.org/dist/hadoop/common/
2. Cloudera Hadoop 
官网地址:https://www.cloudera.com/downloads/cdh/5-10-0.html
下载地址:http://archive-primary.cloudera.com/cdh5/cdh/5/
(1)2008 年成立的 Cloudera 是最早将 Hadoop 商用的公司,为合作伙伴提供 Hadoop 的商用解决方案,主要是包括支持、咨询服务、培训。
(2)2009 年 Hadoop 的创始人 Doug Cutting 也加盟 Cloudera 公司。Cloudera 产品主要为 CDH,Cloudera Manager,Cloudera Support。
(3)CDH 是 Cloudera 的 Hadoop 发行版,完全开源,比 Apache Hadoop 在兼容性,安全性,稳定性上有所增强。
(4)Cloudera Manager 是集群的软件分发及管理监控平台,可以在几个小时内部署好一个Hadoop 集群,并对集群的节点及服务进行实时监控。Cloudera Support 即是对 Hadoop 的技术支持。
(5)Cloudera 的标价为每年每个节点 4000 美元。Cloudera 开发并贡献了可实时处理大数据的 Impala 项目。
3. Hortonworks Hadoop
官网地址:https://hortonworks.com/products/data-center/hdp/
下载地址:https://hortonworks.com/downloads/#data-platform
(1)2011 年成立的 Hortonworks 是雅虎与硅谷风投公司 Benchmark Capital 合资组建。
(2)公司成立之初就吸纳了大约 25 名至 30 名专门研究 Hadoop 的雅虎工程师,上述工程师均在 2005 年开始协助雅虎开发 Hadoop,贡献了 Hadoop80%的代码。
(3)雅虎工程副总裁、雅虎 Hadoop 开发团队负责人 Eric Baldeschwieler 出任 Hortonworks的首席执行官。
(4)Hortonworks 的主打产品是 Hortonworks Data Platform(HDP),也同样是 100%开源的产品,HDP 除常见的项目外还包括了 Ambari,一款开源的安装和管理系统。
(5)HCatalog,一个元数据管理系统,HCatalog 现已集成到 Facebook 开源的 Hive 中。Hortonworks 的 Stinger 开创性的极大的优化了 Hive 项目。Hortonworks 为入门提供了一个非常好的,易于使用的沙盒。
(6)Hortonworks 开发了很多增强特性并提交至核心主干,这使得 Apache Hadoop 能够在包括 Window Server 和 Windows Azure 在内的 Microsoft Windows 平台上本地运行。定价以集群为基础,每 10 个节点每年为 12500 美元。

(四)Hadoop的优势 

1、高可靠性:Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失。
2、高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点。
3、高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度。
4、高容错性:能够自动将失败的任务重新分配。

二、Hadoop的组成 

(一)Hadoop1.x和Hadoop2.x的区别

(二)Hadoop的三种运行模式

        基于Hadoop进行开发时,Hadoop存在着三种部署方式,分别对应着单机、伪分布式、完全分布式等三种运行模式。
        首先对Hadoop 的组件,均利用XML文件进行配置。core-site.xml 文件用于通用属性配置,hdfs-site.xml 文件用于HDFS 的属性配置,mapred-site.xml文件用于MapReduce 的属性配置,yarn-site.xml用于YARN的属性配置。这些文件都存储在Hadoop安装目录下的etc/hadoop目录中。以上四个配置文件系统都有默认设置,分别保存在share/doc 子目录下的四个XML文件中,如core-defaut.xml等。下面简单介绍下Hadoop的三种运行模式。
1. 单机模式
单机模式是Hadoop的默认模式,不对配置文件进行修改,使用本地文件系统,而不是分布式文件系统。Hadoop不会启动NameNode、 DataNode等守护进程,Map和Reduce任务作为同一个进程的不同部分来执行,所有的程序都运行在单个JVM上。这种模式一般用于对MapReduce程序的逻辑进行调试,确保程序的正确。
2.伪分布式模式
在这种模式下,Hadoop守护进程运行在本地机器上,模拟一个小规模的集群,在一台主机上模拟多主机。 Hadoop启动NameNode、 DataNode 这些守护进程都在同一台机器上运行,是相互独立的Java进程。在这种模式下,Hadoop 使用的是分布式文件系统,各个作业也是独立管理,类似于完全分布式模式,常用来测试开发的Hadoop程序执行是否正确。
3.完全分布式模式
在这种模式下,Hadoop 的守护进程运行在由多台主机搭建的集群上,是生产环境必需的配置模式。在所有的主机上都安装JDK和Hadoop,并组成相互连通的网络,主机间设置SSH免密码登录。
        分布式要启动守护进程,是指使用分布式Hadoop 时,要先启动一些准备程序进程,然后才能使用脚本程序,如 start-dfs.sh、 start-yarm.sh等,而本地模式不需要启动这些守护进程。

Hadoop三种运行模式下的配置文件对比
组件名称配置文件属性名称单机模式伪分布式模式完全分布式模式
Commoncore-site.xmlfs.defaultFsfile:///(默认)hdfs://localhost/hdfs://namenode
HDFShdfs-site.xmldfs.replicationN/A13(默认)
MapReducemapred-site.xmlmapreduce.framework.namelocal(默认)YARNYARN
YARNyarn-site.xml

yarn.resoucemanager.hostname

yarn.nodemanager.auxservice 

N/A

N/A

localhost

mapreduce_shuffle

resoucemanager

mapreduce_shuffle

(三)HDFS架构概述

HDFS (Hadoop Distributed File System)的架构概述,如图所示。

1、NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等。
2、DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。
3、Secondary NameNode(2nn):用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。

(四)YARN架构概述

YARN架构概述,如图所示。

(五)MapReduce架构概述

MapReduce将计算过程分为两个阶段:Map和 Reduce,如图所示。
1)Map阶段并行处理输入数据
2)Reduce阶段对Map结果进行汇总

(六)大数据技术生态体系 

大数据技术生态体系,如图所示。

 图中涉及的技术名词解释如下:
1、Sqoop:Sqoop 是一款开源的工具,主要用于在 Hadoop、Hive 与传统的数据库(MySql)间进行数据的传递,可以将一个关系型数据库(例如 :MySQL,Oracle 等)中的数据导进到Hadoop 的 HDFS 中,也可以将 HDFS 的数据导进到关系型数据库中。
2、Flume:Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume 支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
3、Kafka:Kafka 是一种高吞吐量的分布式发布订阅消息系统,有如下特性:
(1)通过 O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以 TB 的消息存储也能够保持长时间的稳定性能。
(2)高吞吐量:即使是非常普通的硬件 Kafka 也可以支持每秒数百万的消息。
(3)支持通过Kafka 服务器和消费机集群来分区消息。
(4)支持 Hadoop 并行数据加载。
4、Storm:Storm 用于“连续计算”,对数据流做连续查询,在计算时就将结果以流的形式输出给用户。
5、Spark:Spark 是当前最流行的开源大数据内存计算框架。可以基于 Hadoop 上存储的大数据进行计算。
6、Spark Streaming:Spark Streaming 是构建在 Spark 上的实时计算框架,它扩展了 Spark 处理大规模流式数据的能力。可批处理和交互式查询,适用于一些需要对历史数据和实时数据进行结合分析的应用场景。
7、Oozie:Oozie 是一个管理 Hadoop 作业(job)的工作流程调度管理系统。
8、Hbase:HBase 是一个分布式的、面向列的开源数据库。HBase 不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。
9、Hive:Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的 SQL 查询功能,可以将 SQL 语句转换为 MapReduce 任务进行运行。 其优点是学习成本低,可以通过类 SQL 语句快速实现简单的 MapReduce 统计,不必开发专门的 MapReduce 应用,十分适合数据仓库的统计分析。
10、R 语言:R 是用于统计分析、绘图的语言和操作环境。R 是属于 GNU 系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。
11、Mahout:Apache Mahout 是个可扩展的机器学习和数据挖掘库。
12、ZooKeeper:Zookeeper 是 Google 的 Chubby 一个开源的实现。它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、 分布式同步、组服务等。ZooKeeper 的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

三、Hadoop安装配置

(一)虚拟机环境准备

1、安装Linux虚拟机
可参考博客:大数据软件基础(3) —— 在VMware上安装Linux集群-CSDN博客

2、修改虚拟机的静态IP

(1)打开“虚拟网络编辑器”,选择“NAT模式”,查看“子网IP”和“子网掩码”。

(2) 修改静态IP,注意不同虚拟机IP地址不同。如下设置。

点击“应用”后,关闭有线连接,再次重新打开。

重新在终端输入如下命令,查看IP地址是否变化。

ifconfig ens33

 3、修改主机名

hostnamectl set-hostname bigdata

重新打开一个终端,查看主机名是否更改成功。

输入命令,并修改文件,输入自己的IP地址和主机名。

[root@bigdata zhc]# vi /etc/hosts

在终端ping一下IP地址,按“Ctrl+C”终止。 

4、关闭防火墙

分别输入如下命令:

  1. [root@bigdata zhc]# systemctl status firewalld.service #查看防火墙状态
  2. [root@bigdata zhc]# systemctl stop firewalld.service #关闭防火墙
  3. [root@bigdata zhc]# systemctl disable firewalld.service #永久关闭防火墙

 出现如下图状态,则关闭成功。

  1. [root@bigdata zhc]# getenforce
  2. Enforcing
  3. [root@bigdata zhc]# vi /etc/selinux/config

5、配置用户免密登录

  1. [root@bigdata zhc]# ssh-keygen
  2. [root@bigdata zhc]# ssh-copy-id bigdata

(二)安装JDK

1、新建文件夹

  1. [root@bigdata zhc]# mkdir /usr/local/servers
  2. [root@bigdata zhc]# mkdir /usr/local/uploads

2、下载jdk安装包,jdk-8u281-linux-x64.tar.gz。(我这里下的是jdk-1.8版本)
https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html

3、通过WinSCP上传到虚拟机“/usr/local/uploads”目录下。

 4、将jdk安装包解压到“/usr/local/servers”目录下。

  1. [root@bigdata local]# cd uploads
  2. [root@bigdata uploads]# tar -zxvf jdk-8u281-linux-x64.tar.gz -C /usr/local/servers

5、到“/usr/local/servers”路径下,更改“jdk1.8.0_281”目录名为“jdk”。

  1. [root@bigdata uploads]# cd /usr/local/servers
  2. [root@bigdata servers]# mv jdk1.8.0_281/ jdk

6、修改全局配置文件“/etc/profile”,在文件最后增加如下一段代码:

  1. if [ -n "${BASH_VERSION-}" ] ; then
  2. if [ -f /etc/bashrc ] ; then
  3. # Bash login shells run only /etc/profile
  4. # Bash non-login shells run only /etc/bashrc
  5. # Check for double sourcing is done in /etc/bashrc.
  6. . /etc/bashrc
  7. fi
  8. fi
  9. export JAVA_HOME=/usr/local/servers/jdk
  10. export JRE_HOME=${JAVA_HOME}/jre
  11. export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
  12. export PATH=$PATH:$JAVA_HOME/bin
  13. export HADOOP_HOME=/usr/local/servers/hadoop
  14. export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  15. export ZK_HOME=/usr/local/servers/zookeeper
  16. export PATH=$PATH:$ZK_HOME/bin
  17. export HBASE_HOME=/usr/local/servers/hbase
  18. export PATH=$PATH:$HBASE_HOME/bin
  19. export CLASSPATH=$CLASSPATH:$HBASE_HOME/lib

 然后使文件生效,并查看当前jdk版本。

  1. [root@bigdata servers]# source /etc/profile
  2. [root@bigdata servers]# java -version

(三)安装Hadoop

1、到Hadoop官网下载安装包:https://hadoop.apache.org/release/3.1.3.html

2、将“hadoop-3.1.3.tar.gz”安装包上传到虚拟机,“/usr/local/uploads”目录下。

 3、将hadoop安装包解压到“/usr/local/servers”目录下。

  1. [root@bigdata servers]# cd /usr/local/uploads
  2. [root@bigdata uploads]# tar -zxvf hadoop-3.1.3.tar.gz -C /usr/local/servers

 4、到“/usr/local/servers”路径下,将“hadoop-3.1.3”目录名改为“hadoop”。并使全局配置文件“/etc/profile”生效。

  1. [root@bigdata uploads]# cd ../servers
  2. [root@bigdata servers]# mv hadoop-3.1.3/ hadoop
  3. [root@bigdata servers]# vi /etc/profile
  4. [root@bigdata servers]# source /etc/profile

查看hadoop版本,说明安装成功。

[root@bigdata servers]# hadoop version

(四)配置伪分布式Hadoop集群

1、先切换到“/usr/local/servers/hadoop/etc/hadoop”目录下,查看hadoop的配置文件。

[root@bigdata servers]# cd /hadoop/etc/hadoop

2、配置hadoop-env.sh文件,在文件最后加入如下代码:

[root@bigdata hadoop]# vi hadoop-env.sh
  1. ###
  2. # Registry DNS specific parameters
  3. ###
  4. # For privileged registry DNS, user to run as after dropping privileges
  5. # This will replace the hadoop.id.str Java property in secure mode.
  6. # export HADOOP_REGISTRYDNS_SECURE_USER=yarn
  7. # Supplemental options for privileged registry DNS
  8. # By default, Hadoop uses jsvc which needs to know to launch a
  9. # server jvm.
  10. # export HADOOP_REGISTRYDNS_SECURE_EXTRA_OPTS="-jvm server"
  11. export JAVA_HOME=/usr/local/servers/jdk
  12. #HADOOP_SHELL_EXECNAME=root
  13. export HDFS_NAMENODE_USER=root
  14. export HDFS_DATANODE_USER=root
  15. export HDFS_SECONDARYNAMENODE_USER=root
  16. export YARN_RESOURCEMANAGER_USER=root
  17. export YARN_NODEMANAGER_USER=root

3、配置core-site.xml文件,在两个 标签中间加入如下代码:

[root@bigdata hadoop]# vi core-site.xml
  1. fs.defaultFS
  2. hdfs://localhost:9000
  3. hadoop.tmp.dir
  4. file:/usr/local/servers/hadoop/tmp

4、配置hdfs-site.xml文件, 在两个 标签中间加入如下代码:

[root@bigdata hadoop]# vi hdfs-site.xml
  1. dfs.replication
  2. 1
  3. dfs.namenode.name.dir
  4. ${hadoop.tmp.dir}/nndata
  5. dfs.datanode.data.dir
  6. ${hadoop.tmp.dir}/dndata

5、配置yarn-site.xml文件,在两个 标签中间加入如下代码:

[root@bigdata hadoop]# vi yarn-site.xml
  1. yarn.resourcemanager.hostname
  2. localhost
  3. yarn.resourcemanager.webapp.address
  4. ${yarn.resourcemanager.hostname}:8088
  5. yarn.nodemanager.vmem-check-enabled
  6. false
  7. yarn.nodemanager.aux-services
  8. mapreduce_shuffle
  9. yarn.application.classpath
  10. ${HADOOP_HOME}/etc/hadoop/conf,
  11. ${HADOOP_HOME}/share/hadoop/common/lib/*,
  12. ${HADOOP_HOME}/share/hadoop/common/*,
  13. ${HADOOP_HOME}/share/hadoop/hdfs,
  14. ${HADOOP_HOME}/share/hadoop/hdfs/lib/*,
  15. ${HADOOP_HOME}/share/hadoop/hdfs/*,
  16. ${HADOOP_HOME}/share/hadoop/mapreduce/*,
  17. ${HADOOP_HOME}/hadoop/yarn,
  18. ${HADOOP_HOME}/share/hadoop/yarn/lib/*,
  19. ${HADOOP_HOME}/share/hadoop/yarn/*

6、配置mapred-site.xml,在两个 标签中间加入如下代码:

[root@bigdata hadoop]# vi mapred-site.xml
  1. mapreduce.framework.name
  2. yarn

 7、创建目录“/usr/local/servers/hadoop/tmp”,代表临时根目录。

  1. [root@bigdata hadoop]# mkdir /usr/local/servers/hadoop/tmp
  2. [root@bigdata hadoop]# mkdir /usr/local/servers/hadoop/tmp/nndata
  3. [root@bigdata hadoop]# mkdir /usr/local/servers/hadoop/tmp/dndata

8、格式化Hadoop的分布式文件系统。

[root@bigdata hadoop]# hdfs namenode -format

找到如下信息则表示格式化成功:

 9、分别启动hadoop和yarn进程

  1. [root@bigdata hadoop]# start-dfs.sh
  2. [root@bigdata hadoop]# start-yarn.sh

一共启动了5个进程,分别是NameNode、DataNode、SecondaryNameNode、ResourceManager和NodeManager。 

提示:安装好Hadoop集群后,可以给虚拟机做个快照,作用是快速的系统备份与还原的功能。
点击“虚拟机-快照-拍摄快照” ,即可完成。

 

10、在虚拟机的Firefox浏览器上输入:http://bigdata:9870(这里的bigdata是自己的机器名)

这样伪分布式Hadoop集群就搭建好了。

友情提醒:关闭虚拟机电源前,要先关闭Hadoop集群,不然下次使用时会导致节点丢失!

文章知识点与官方知识档案匹配,可进一步学习相关知识
CS入门技能树Linux入门在线安装软件39898 人正在系统学习中
Francek Chen
微信名片
注:本文转载自blog.csdn.net的Francek Chen的文章"https://blog.csdn.net/Morse_Chen/article/details/134833801"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top