提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、Hadoop入门
1.1Hadoop简介
Hadoop是Apache是旗下的一个开源软件平台,广泛的来说Hadoop是一个生态圈,用来对海量数据进行分布式处理。Hadoop生态圈如下图所示:
1.2Hadoop组成
Hadoop Common:基础功能类库支持其他 Hadoop 模块 Hadoop Distributed File System(HDFS):一个分布式文件系统,它提供了高通量访问应用程序 数据 Hadoop YARN:一个集群作业调度和资源管理的框架 Hadoop MapReduce:YARN-based 系统并行处理大型数据集。(版本升级以 YARN 做资 源管理器的 Hadoop)
1.3Haoop其他组件介绍
1、 Ambari:一个基于 web 的工具配置,管理和监视 Apache Hadoop 集群,包括支持 Hadoop 的 Hadoop HDFS,Hadoop MapReduce,Hive,HCatalog,HBase,ZooKeeper, Oozie, Pig and Sqoop。Ambari 还提供了一个仪表板查看集群健康,如热图和能够有 效看到 MapReduce,Pig 和 Hive 应用的特性来诊断性能特征以用户友好的方式。 2、Avro是apache Avro的简称,其实是一个独立于编程语言的数据序列化系统,设计用于支持大批量数据交换的应用。hadoop自身提供了一个轻量级的序列化的系统Writable.虽然这个Writable相比Java提供的系列化Serializable更加轻便简洁好用,但是Writable类型也有很多不足,比如缺乏语言的可移植性,不能让Writable类型处理的数据在java,C, C++,python等多种语言之前相互转换。 3、 Cassandra:一个没有单点故障可伸缩的多主机数据库。Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与AmazonDynamo的完全分布式的架构于一身。 4、 Chukwa:chukwa 是一个开源的用于监控大型分布式系统的数据收集系统。这是构建在 hadoop 的 hdfs 和 map/reduce 框架之上的,继承了 hadoop 的可伸缩性和鲁棒性。Chukwa 还包含了一个强大和灵活的工具集,可用于展示、监控和分析已收集的数据。 5、HBase:一个可扩展的分布式数据库,支持大型表的结构化数据存储。 6、Hive:一个数据仓库基础设施,提供了数据总结和特别查询。能将SQL语句转变成MapReduce任务来执行。CLI是shell命令行,将元数据metastore(database、表明、表列等等)存储在MySQL中,Driver驱动模块负责HQL查询的实现(生成内置的MapReduce任务执行),数据最终存储在hdfs中;
7、 Mahout:一个可扩展的机器学习和数据挖掘库。提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,通过使用 Apache Hadoop 库,Mahout 可以有效地扩展到云中。 8、Pig:一个高级数据流语言和并行计算的执行框架。 pig为大型数据集的处理提供了更高层次的抽象。MapReduce使程序员能够自定定义连续执行的map和reduce函数。但是,数据处理通常需要多个mapreduce过程才能实现,所以将数据处理要求改写成mapreduce模式很复杂的。 9、Spark:Hadoop 数据的快速、通用的计算引擎。Spark 提供了一个简单的和丰富的编 程模型,支持广泛的应用程序,包括 ETL、机器学习、流处理和图计算。
10·tez:一个广义数据流编程框架,基于 Hadoop 的 YARN,它提供了一个功能强大且灵 活的引擎来执行任意 DAG(有向无环图)的任务来处理批处理和交互用例的数据。Tez 正在被 Hive, Pig 和其他框架 Hadoop 生态系统,以及其他商业软件(例如 ETL 工 具),以取代 Hadoop MapReduce作为底层执行引擎。 11、 ZooKeeper:一个高性能的分布式应用程序的协调服务。 12、presto:Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。Presto的设计和编写完全是为了解决像Facebook这样规模的商业数据仓库的交互式分析和处理速度的问题。注意:虽然Presto可以解析SQL,但它不是一个标准的数据库。不是MySQL、Oracle的代替品,也不能用来处理在线事务(OLTP)。响应时间小于1秒到几分钟的场景。Presto是一个运行在多台服务器上的分布式系统。完整安装包括一个Coordinator和多个Worker。由客户端提交查询,从Presto命令行CLI提交到Coordinator。Coordinator进行解析,分析并执行查询计划,然后分发处理队列到Worker。
13、Apache Kylin是一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。Kylin的主要特点包括支持SQL接口、支持超大规模数据集、亚秒级响应、可伸缩性、高吞吐率、BI工具集成等。 14、Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,主要用于在一个工作流内以一个特定的顺序运行一组工作和流程,它的配置是通过简单的key:value对的方式,通过配置中的dependencies 来设置依赖关系。Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。 15、Druid 是一个分布式的支持实时分析的数据存储系统(Data Store)。美国广告技术公司MetaMarkets 于2011 年创建了Druid 项目,并且于2012 年晚期开源了Druid 项目。Druid 设计之初的想法就是为分析而生,它在处理数据的规模、数据处理的实时性方面,比传统的OLAP 系统有了显著的性能改进。 16、Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构,灵活简单。 17、Oozie:Oozie是一个管理Hdoop作业(job)的工作流程调度管理系统。
二、Hadoop集群安装前准备
1.克隆虚拟机
参考之前的文章:https://blog.csdn.net/qq_36390552/article/details/118328459?spm=1001.2014.3001.5501
2.安装java
下面展示一些 内联代码片 。
卸载现有JDK
1.查询是否安装Java软件
[hadoop@hadoop02 opt]$ rpm -qa | grep java
2.如果安装的版本低于1.7,卸载该JDK:
[hadoop@hadoop02 opt]$ sudo rpm -e 软件包
3.查看JDK安装路径:
[hadoop@hadoop02 ~]$ which java 或者是pwd命令进行查看
4.导入jdk安装包linux版本
5.解压JDK到/usr/local/java/jdk1.8.0_73/bin/java目录下
[hadoop@hadoop02 software]$ tar -zxvf jdk-8u144-linux-x64.tar.gz -C /usr/local/java/jdk1.8.0_73/bin/java
6.配置JDK环境变量,打开etc/profile 在文件中添加 #JAVA_HOME
export JAVA_HOME= /usr/local/java/jdk1.8.0_73/bin/java
export PATH=$PATH:$JAVA_HOME/bin
7.保存后退出
:wq
8.让修改后的文件生效
[hadoop@hadoop02 jdk1.8.0_144]$ source /etc/profile
9.测试JDK是否安装成功
[hadoop@hadoop02 jdk1.8.0_144]# java -version
java version "1.8.0_144"
3.修改主机名
在 root 账号下用命令:vi /etc/sysconfig/network
4.设置系统默认启动级别
vi /etc/inittab ,改默认启动级别,3 是多用户模式,并且不启动图形界面
5.配置Hadoop用户权限
下面展示一些 内联代码片 。
配置 hadoop 用户 sudoer 权限
在 root 账号下, 找到root ALL=(ALL) ALL 这一行,然后在他下面添加一行:hadoop ALL=(ALL)ALL
保存,退出
6.关闭防火墙
关闭防火墙:service iptables stop,同时关闭selinux,改/etc/selinux/config 配置文件中的 SELINUX=disabled改为disabled
7.添加内网域名映射
vi/etc/hosts
8.同步服务器时间
1、使用 date 命令手动简单同步一下
命令:date -s "2021-08-04 11:11:11"
修改时间后,需要写入硬件 bios 才能在重启之后依然生效
命令:hwclock -w
2、配置 crontab 服务,用 ntpdate 定时同步时间(推荐方式)
ntpdate 202.120.2.101
9.配置免密登录
1) 在 hadoop 登录状态下,输入命令 ssh-keygen 或者 ssh-keygen -t rsa
2) 之后你会发现,在/home/hadoop/.ssh 目录下生成了公钥文件
3)复制公钥文件到授权列表,cat ./id_rsa.pub >> authorized_keys
4)修改文件权限,chmod 600 ./authorized_keys
5)将该授权文件 authorized_keys 文件复制到 slave 节点,scp ./authorized_keys hadoop@hadoop02:~/.ssh/
6)检测登录 ssh hadoop03
10.同步分发工具
10.1 scp(secure copy)安全拷贝,scp可以实现服务器与服务器之间的数据拷贝。(from server1 to server2)
scp -r $pdir/$fname $user@hadoop$host:$pdir/$fname
命令 递归 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称
在hadoop02上,将hadoop03服务器上的/opt/module目录下的软件拷贝到hadoop03上。
[hadoop02@hadoop02 opt]$sudo scp -r hadoop02@hadoop02:/opt/module root@hadoop03:/opt/module
10.2 rsync 远程同步工具,rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。
三、Hadoop集群安装
3.1 hadoop下载地址:https://archive.apache.org/dist/hadoop/common/hadoop-2.7.2/
3.2 hadoop分布式集群安装
3.2.1集群部署规划
3.2.2安装详细过程
1) 1、修改 hadoop-env.sh
hadoop运行环境,配置环境变量的,一般有Java home,hadoopconfdir等这些软件、配置目录,有运行过程中使用的变量
--------------------------------
export JAVA_HOME=/usr/java/jdk1.8.0_73
2)2、修改 core-site.xml
集群全局参数 用于定义系统级别的参数,如HDFS URI 、Hadoop的临时目录等。namenode地址,9000是RPC通信端口。
----------------------------------
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop02:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoopdata</value>
</property>
------------------------------------
3)3、修改 hdfs-site.xml
如名称节点和数据节点的存放位置、文件副本的个数、文件的读取权限等,下面设置的分别是主节点的存储目录,从节点的存储目录, hadoop的备份系数,dfs.replication这个参数是个client参数,即node level参数,一般不超过3个。
--------------------------
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/hadoopdata/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/hadoopdata/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>hadoop03:50090</value>
</property>
-------------------------------------------------
4、修改 mapred-site.xml(集群只有 mapred-site.xml.template,可以从这个文件进行复
制,或者直接改名也可)MapReduce使用的框架,默认改为yarn
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
-------------------------------------------
5、修改 yarn-site.xml ------因为集群部署中resourcemanager部署在04,声明位置。
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop04</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
6、修改 slaves 文件,添加以下内容,该内容是从节点列表
hadoop02
hadoop03
hadoop04
7、分发安装包到各个节点,Hadoop 集群的每个节点都需要安装 Hadoop 安装包
scp -r hadoop-2.7.2 hadoop02:$PWD
scp -r hadoop-2.7.2 hadoop03:$PWD
8、在 HDFS 主节点上执行命令进行初始化 namenode
bin/hadoop namenode -format
查看最后是否初始化成功,如下图所示。
9、HDFS 上的主节点启动 HDFS
sbin/start-dfs.sh
10、检查集群是否安装成功
hadoop fs -ls /
检查是否启动成功,如下图所示即可 ![在这里插入图片描述](https://img-blog.csdnimg.cn/bbaa5f6919344edea0175d0c63edb83c.png)
总结
以上就是hadoop安装的全部过程,在补充一些命令。
1、启动 namenode 或者 datenode
sbin/hadoop-daemon.sh start datanode
sbin/hadoop-daemon.sh start namenode
2、启动 yarn nodemanager
sbin/yarn-daemon.sh start nodemanager
sbin/yarn-daemon.sh start resourcemanager
3、hdfs 集群信息 web 管理界面地址
http://hadoop02:50070
4、mapreduce 运行状态信息 web 管理界面
http://hadoop04:8088
5、查看集群状态
hadoop dfsadmin -report
hdfs dfsadmin -report(推荐用这个)
|