hadoop 核心概念及入门

Hadoop入门试题 1、Mapreduce擅长那个领域的计算? A、离线批处理 B、DAG计算 C、流式计算 D、实时计算 2、关于Mapduce原理,下面说法错误的是? A、分为Map和Reduce两个阶段 B、Map阶段由一系列Map任务组成 C、Reduce阶段由一系列Reduce任务组成 D、Map阶段和Reduce阶段没有任何依赖关系 3、HDFS默认副本数是? A、1 B、2 C、3 D、4 4、哪个不属于HDFS架构组成部分? A、NameNode B、Secondary Nam 阅读详情

Hadoop

Hadoop 核心概念

什么是 Hadoop

HADOOP是apache旗下的一套开源软件平台HADOOP提供利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理,HADOOP的核心组件有:HDFS(分布式文件系统)、YARN(运算资源调度系统)、MAPREDUCE(分布式运算编程框架),广义上来说,HADOOP通常是指一个更广泛的概念——HADOOP生态圈

Hadoop 产生背景

HADOOP最早起源于Nutch。Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题——如何解决数十亿网页的存储和索引问题。2003年、2004年谷歌发表的两篇论文为该问题提供了可行的解决方案。——分布式文件系统(GFS),可用于处理海量网页的存储——分布式计算框架MAPREDUCE,可用于处理海量网页的索引计算问题。Nutch的开发人员完成了相应的开源实现HDFS和MAPREDUCE,并从Nutch中剥离成为独立项目HADOOP,到2008年1月,HADOOP成为Apache顶级项目,迎来了它的快速发展期。

HADOOP生态圈以及各组成部分的简介

  • HDFS:分布式文件系统
  • MAPREDUCE:分布式运算程序开发框架
  • HIVE:基于大数据技术(文件系统+运算框架)的SQL数据仓库工具
  • HBASE:基于HADOOP的分布式海量数据库
  • ZOOKEEPER:分布式协调服务基础组件
  • Mahout:基于mapreduce/spark/flink等分布式运算框架的机器学习算法库
  • Oozie:工作流调度框架
  • Sqoop:数据导入导出工具
  • Flume:日志数据采集框架

分布式系统概述

注:由于大数据技术领域的各类技术框架基本上都是分布式系统,因此,理解hadoop、storm、spark等技术框架,都需要具备基本的分布式系统概念

什么是分布式

分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据 。分布式系统的特点是:硬件独立,各设备之间独立,互不依赖、 软件统一,对用户来说,就像是跟单个系统打交道。

为什么需要分布式

为了性能扩展:系统负载高,单台机器无法承受,希望通过多台机器来提高系统负载能力 为了增强可靠性:软件不是完美的,网络不是完美的,甚至机器也不是完美的,随时可能出错,为了避免故障,需要将业务分散开保留一定的冗余度

分布式软件系统(Distributed Software Systems)

  1. 该软件系统会划分成多个子系统或模块,各自运行在不同的机器上,子系统或模块之间通过网络通信进行协作,实现最终的整体功能

  2. 比如分布式操作系统、分布式程序设计语言及其编译(解释)系统、分布式文件系统和分布式数据库系统等。

为什么使用分布式

  • 单机处理能力存在瓶颈;
  • 升级单机处理能力的性价比越来越低;
  • 分布式系统稳定性、可用性好

web日志数据挖掘

“Web点击流日志”包含着网站运营很重要的信息,通过日志分析,我们可以知道网站的访问量,哪个网页访问人数最多,哪个网页最有价值,广告转化率、访客的来源信息,访客的终端信息等。

hadoop集群搭建

集群简介

HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起HDFS集群:负责海量数据的存储,集群中的角色主要有 NameNode / DataNode YARN集群:负责海量数据运算时的资源调度,集群中的角色主要有 ResourceManager / NodeManager (那mapreduce是什么呢?它其实是一个应用程序开发包)

服务器分配
本集群搭建案例,以5节点为例进行搭建,角色分配如下:

节点进程
node-1NameNode ResourceManager
node-2SecondaryNameNode
node-3DataNode NodeManager
node-4DataNode NodeManager
node-5DataNode NodeManager

服务器系统配置

  1. 配置系统网络,安装常用依赖包如文件上传、编辑器、网络工具

  2. 同步时间、配置各主机名称映射、配置ssh免密登陆

  3. 安装java环境

hadoop集群安装部署


# 下载
$ wget https://mirrors.shu.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz

# 解压缩
$  tar -zxvf hadoop-2.7.7/hadoop-2.7.7.tar.gz

# 修改系统环境变量
$ vi /etc/profile

export HADOOP_HOME=/export/servers/hadoop2.7.7
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin


# 配置环境变量
$ vi  hadoop-env.sh

export JAVA_HOME=/usr/local/jdk1.8.0_191

# core-site.xml配置如下
$ vi core-site.xml

<configuration>   
    <property>   
        <name>fs.defaultFS</name>   
        <value>hdfs://node-1:9000</value>   
    </property>   
    <property>   
        <name>hadoop.tmp.dir</name>   
        <value>/export/data/hadoop/tmp</value>
    </property>
</configuration>


# hdfs-site.xml配置如下
$ vi  hdfs-site.xml

<configuration>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/export/data/hadoop/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/export/data/hadoop/data</value>
    </property>

    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>

    <property>
        <name>dfs.secondary.http.address</name>
        <value>node-2:50090</value>
    </property>

</configuration>

# mapred-site.xml配置如下
$ vi mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>


# yarn-site.xml配置如下
$ vi yarn-site.xml

<configuration>

  <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>node-1</value>
    </property>

    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

</configuration>

# 修改 slaves 配置
$ vim salves

node-3
node-4
node-5

启动hadoop集群

# 初始化HDFS
$ hadoop namenode -format

# 启动HDFS
$ $HADOOP_HOME/sbin/start-dfs.sh

# 启动yarn
$ $HADOOP_HOME/sbin/start-yarn.sh

# 启动hdfs和yarn
$ $HADOOP_HOME/sbin/start-all.sh

# hadoop常用命令

# 查看hadoop版本
$ hadoop verion

# 运行jar文件
$ hadoop jar

# 创建文件夹
$ hadoop fs -mkdir -p /data/input

# 递归查看文件夹
$ hadoop fs -ls -R /data/input

# 上传本地文件到HDFS
$ hadoop fs -put /root/words.txt  /data/input

# 查看HDFS上的文件
$ hadoop fs -cat /data/input/words.txt

# 删除HDFS上的文件
$ hadoop fs -rm -f /data/input/words.txt

运行一个mapreduce程序

使用hadoop自带的例子程序,运行一个示例mr程序

$ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /data/input /data/output

集群使用初步

可打开web控制台查看 HDFS 和 yarn 集群信息 hdfs 的 web 页面是 http://node-1:50070/ yarn 集群信息的 web 页面是http://node-1:8088/

mapreduce是hadoop中的分布式运算编程框架,只要按照其编程规范,只需要编写少量的业务逻辑代码即可实现一个强大的海量数据并发处理程序

HDFS详解

HDFS前言

设计思想

  • 分而治之:将大文件、大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析;

在大数据系统中作用:

  • 为各类分布式运算框架(如:mapreduce,spark,tez,……)提供数据存储服务

重点概念

  • 文件切块,副本存放,元数据

HDFS的概念和特性

首先,它是一个文件系统,用于存储文件,通过统一的命名空间——目录树来定位文件

其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色

重要特性如下

  • HDFS中的文件在物理上是分块存储(block),块的大小可以通过配置参数( dfs.blocksize)来规定,默认大小在hadoop2.x版本中是128M,老版本中是64M

  • HDFS文件系统会给客户端提供一个统一的抽象目录树,客户端通过路径来访问文件,形如:hdfs://host:port/xxx/xxx/file.data

  • 目录结构及文件分块信息(元数据)的管理由namenode节点承担namenode是HDFS集群主节点,负责维护整个hdfs文件系统的目录树,以及每一个路径(文件)所对应的block块信息(block的id,及所在的datanode服务器)

  • 文件的各个 block 的存储管理由datanode节点承担 datanode 是HDFS集群从节点,每一 个block 都可以在多个 datanode 上存储多个副本(副本数量也可以通过参数设置dfs.replication)

  • HDFS是设计成适应一次写入,多次读出的场景,且不支持文件的修改

(注:适合用来做数据分析,并不适合用来做网盘应用,因为,不便修改,延迟大,网络开销大,成本太高)

HDFS常用命令

dfs == hadoop fs

# 在hdfs上创建目录
$ dfs -mkdir /xxx

# 显示目录信息
$ dfs -ls -r /xxx

# 递归查看HDFS目录文件
$ dfs -lsr  /xxx

# 等同于copyFromLocal 
$ dfs -put a.html /xxx

# 等同于copyToLocal,就是从hdfs下载文件到本地
$ dfs -get /xxx/a.html

# 删除文件夹下所有文件
$ dfs -rm -r -f /data

# 显示文件内容
$ dfs -cat  /xxx/a.txt

# 从本地剪切粘贴到hdfs
$ dfs -moveFromLocal

# 从hdfs剪切粘贴到本地
$ dfs -moveToLocal

# 追加一个文件到已经存在的文件末尾
$ dfs -appendToFile

# 显示一个文件的末尾
$ dfs -tail

# 从hdfs的一个路径拷贝hdfs的另一个路径
$ dfs -cp

# 从hdfs的一个路径拷贝hdfs的另一个路径
$ dfs -mv

# 删除文件或文件夹
$ dfs -rm

HSFS原理

  • 概述

    • HDFS集群分为两大角色:NameNode、DataNode (Secondary Namenode)
    • NameNode负责管理整个文件系统的元数据
    • DataNode 负责管理用户的文件数据块
    • 文件会按照固定的大小(blocksize)切成若干块后分布式存储在若干台datanode上
    • 每一个文件块可以有多个副本,并存放在不同的datanode上
    • Datanode会定期向Namenode汇报自身所保存的文件block信息,而namenode则会负责保持文件的副本数量
    • HDFS的内部工作机制对客户端保持透明,客户端请求访问HDFS都是通过向namenode申请来进行
  • HDFS上传文件的步骤

    客户端要向HDFS写数据,首先要跟namenode通信以确认可以写文件并获得接收文件block的datanode,然后,客户端按顺序将文件逐个block传递给相应datanode,并由接收到block的datanode负责向其他datanode复制block的副本

    • 根namenode通信请求上传文件,namenode检查目标文件是否已存在,父目录是否存在
    • namenode返回是否可以上传
    • client请求第一个 block该传输到哪些datanode服务器上
    • namenode返回3个datanode服务器ABC
    • client请求3台dn中的一台A上传数据(本质上是一个RPC调用,建立pipeline),A收到请求会继续调
    • 然后B调用C,将真个pipeline建立完成,逐级返回客户端
    • client开始往A上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet为单位,A收到一个packet就会传给B,B传给C;A每传一个packet会放入一个应答队列等待应答
    • 当一个block传输完成之后,client再次请求namenode上传第二个block的服务器。
  • HDFS 读数据流程

    客户端将要读取的文件路径发送给namenode,namenode获取文件的元信息(主要是block的存放位置信息)返回给客户端,客户端根据返回的信息找到相应datanode逐个获取文件的block并在客户端本地进行数据追加合并从而获得整个文件

    • 跟namenode通信查询元数据,找到文件块所在的datanode服务器
    • 挑选一台datanode(就近原则,然后随机)服务器,请求建立socket流
    • datanode开始发送数据(从磁盘里面读取数据放入流,以packet为单位来做校验)
    • 客户端以packet为单位接收,现在本地缓存,然后写入目标文件

namenode职责

负责客户端请求的响应,元数据的管理(查询,修改)

元数据管理

namenode对数据的管理采用了三种存储形式:
1.内存元数据(NameSystem)
2.磁盘元数据镜像文件
3.数据操作日志文件(可通过日志运算出元数据)

元数据存储机制

  • 内存中有一份完整的元数据(内存meta data)

  • 磁盘有一个“准完整”的元数据镜像(fsimage)文件在 namenode 的工作目录中

  • 用于衔接内存metadata和持久化元数据镜像fsimage之间的操作日志 edits 文件

注:当客户端对hdfs中的文件进行新增或者修改操作,操作记录首先被记入edits日志文件中,当客户端操作成功后,相应的元数据会更新到内存meta.data中

元数据手动查看

  • 可以通过hdfs的一个工具来查看edits中的信息
  • bin/hdfs oev -i edits -o edits.xml
  • bin/hdfs oiv -i fsimage_0000000000000000087 -p XML -o fsimage.xml

元数据的checkpoint

每隔一段时间,会由secondary namenode将namenode上积累的所有edits和一个最新的fsimage下载到本地,并加载到内存进行merge(这个过程称为checkpoint)

元数据目录说明

在第一次部署好Hadoop集群的时候,我们需要在NameNode(NN)节点上格式化磁盘:

$ $HADOOP_HOME/bin/hdfs namenode -format

格式化完成之后,将会在$dfs.namenode.name.dir/current目录下如下的文件结构

current/
|-- VERSION
|-- edits_*
|-- fsimage_0000000000008547077
|-- fsimage_0000000000008547077.md5
|-- seen_txid

DATANODE的工作机制

  • Datanode工作职责:

存储管理用户的文件块数据,定期向namenode汇报自身所持有的block信息(通过心跳信息上报,这点很重要,因为,当集群中发生某些block副本失效时,集群如何恢复block初始副本数量的问题)

<property>
    <name>dfs.blockreport.intervalMsec</name>
    <value>3600000</value>
</property>
  • Datanode掉线判断时限参数

datanode进程死亡或者网络故障造成datanode无法与namenode通信,namenode不会立即把该节点判定为死亡,要经过一段时间,这段时间暂称作超时时长。HDFS默认的超时时长为10分钟+30秒。如果定义超时时间为timeout,则超时时长的计算公式为:timeout = 2 * heartbeat.recheck.interval + 10 * dfs.heartbeat.interval。

而默认的heartbeat.recheck.interval 大小为5分钟,dfs.heartbeat.interval默认为3秒。
需要注意的是hdfs-site.xml 配置文件中的heartbeat.recheck.interval的单位为毫秒,dfs.heartbeat.interval的单位为秒。所以,举个例子,如果heartbeat.recheck.interval设置为5000(毫秒),dfs.heartbeat.interval设置为3(秒,默认),则总的超时时间为40秒。

<property>
    <name>heartbeat.recheck.interval</name>
    <value>2000</value>
</property>
<property>
    <name>dfs.heartbeat.interval</name>
    <value>1</value>
</property>

验证DATANODE功能

上传一个文件,观察文件的block具体的物理存放情况:

在每一台datanode机器上的这个目录中能找到文件的切块:
/export/data/hadoop/tmp/dfs/data/current/BP-193442119-192.168.2.120-1432457733977/current/finalized

hadoop hdfs java客户端

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.net.URI;

/**
 * <p>
 *
 * @author leone
 * @since 2018-05-06
 **/
public class HdfsClientTest {

    FileSystem fs = null;

    /**
     * 初始化
     */
    @Before
    public void init() throws Exception {
        Configuration conf = new Configuration();
        fs = FileSystem.get(new URI("hdfs://node-1:9000/"), conf, "root");
    }

    /**
     * 上传文件
     *
     * @throws IOException
     */
    @Test
    public void putTest() throws IOException {
        fs.copyFromLocalFile(new Path("file:///D:/tmp/hadoop/input1/words.txt"),
                new Path("hdfs://node-1:9000/hadoop-2.7.7/input1/words.txt"));
    }


    /**
     * 下载文件
     *
     * @throws Exception
     * @throws IOException
     */
    @Test
    public void download() throws Exception, IOException {
        fs.copyToLocalFile(new Path("/hadoop-2.7.7/input1/words.txt"), new Path("file:///E:/hadoop/words.txt"));
    }


    /**
     * 创建目录
     *
     * @throws IllegalArgumentException
     * @throws IOException
     */
    @Test
    public void mkdirTest() throws IllegalArgumentException, IOException {
        fs.mkdirs(new Path("/test/input/"));
    }

    /**
     * 删除文件或目录
     */
    @Test
    public void deleteTest() throws IOException {
        fs.delete(new Path("/test"), true);
    }

    /**
     * 移动文件
     *
     * @throws IllegalArgumentException
     * @throws IOException
     */
    @Test
    public void mvFileTest() throws IllegalArgumentException, IOException {
        fs.rename(new Path("/hadoop-2.7.7/input1/words.txt"), new Path("/hadoop-2.7.7/input3/words.txt"));
    }

}

【大数据入门核心技术-Hadoop】(二)Hadoop基础概念之HDFS 合并会有大量的IO操作,如果合并操作由NameNode自己做的话,那么计算机将会分配大量的内存空间给NameNode来做合并,会影响用户的使用,NameNode主要是用来接收用户的请求操作的,合并由SecondaryNameNode来做的话,可保证NameNode工作的专一性,提供性能。3.客户端获取之后,通过接口FSData CutputStream API 先将一个block写入到DataNode中,其余的副本由DataNode开启新的线程根据副本放置规则,往其它DataNode上进行复制。 阅读详情

相关推荐

【大数据入门核心技术-Hadoop】(四)Hadoop基础概念之YARN

处理客户端请求启动/监控ApplicationMaster监控NodeManager资源分配与调度。对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息。处理客户端请求 启动/监控ApplicationMaster 监控NodeManager 资源分配与调度

742

Hadoop核心组成和生态系统简介

Hadoop核心组成和生态系统简介

日常分享数据分析开发、编程语言内容 1916

【大数据入门核心技术-Hadoop】(三)Hadoop基础概念之MapReduce

既然是做计算的框架,那么表现形式就是有个输入(input),MapReduce操作这个输入(input),通过本身定义好的计算模型,得到一个输出(output)。MapReduce是一个分布式运算程序的编程框架,核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在Hadoop集群上。Map: 将数据进行拆分,即把复杂的任务分解为若干个“简单的任务”来并行处理。分而治之,先分后和:将一个大的、复杂的工作或任务,拆分成多个小的任务,并行处理,最终进行合并。

681

初识Hadoop两大核心:HDFS和MapReduce

其中NameNode、Secondary NameNode、JobTracker运行在Master节点上,而在每个Slave节点上,部署一个DataNode和TaskTracker,以便 这个Slave服务器运行的数据处理程序能尽可能直接处理本机的数据。Hadoop是一个能够对大量数据进行分布式处理的软件框架,实现了Google的MapReduce编程模型和框架,能够把应用程序分割成许多的小的工作单元,并把这些单元放到任何集群节点上执行。Datanode(Slave):记录着服务器内所储存的数据块的列表。.

web13170611647的博客 4866

Cloudera的Hadoop快速入门指南将带你掌握Hadoop所需的知识。

作者:禅与计算机程序设计艺术 1.简介 1.1 Cloudera是什么? Cloudera(隶属于Apache基金会)是一个领先的开源分布式计算平台,其创始人之一在2010年被任命为该项目的CEO,他以“让数据更具价值”为使命,帮助

AI天才研究院 1341

Wan 3.0提示词实战:从抄作业到改作业的完整技巧

AI视频生成中,提示词是决定成片质量的核心。视频模型依赖于文字约束来定义运动轨迹、镜头语言与物理合理性,提示词工程因此成为连接创意与技术的关键。本文从提示词的结构、资源获取、优化方法入手,结合Wan 3.0的模型特点,梳理了从官方模板到社区案例的实战路径,并强调运动一致性、风格词堆砌等常见问题。通过分解主体、动作、镜头等维度,帮助创作者快速找到适配的提示词,提升视频生成的稳定性与惊喜感。

weixin_29483277的博客 350

Hadoop三大核心(HDFS,YARN,MapReduce)

Hadoop三大核心 1.HDFS HDFS是分布式文件系统,有高容错性的特点,可以部署在价格低廉的服务器上,主要包含namenode和datanode。 Namenode是hdfs中文件目录和文件分配管理者,它保存着文件名和数据块的映射管理,数据块和datanode列表的映射关系。 其中文件名和数据块的关系保存在磁盘上,但是namenode上不保存数据块和datanode列表的关系,该列表是通过...

weixin_44161678的博客 2443

OLED的字模提取(保姆级)---基于PCtoLCD2013

做为一个刚刚开始接触编程不久的白菜,这个OLED想做一个信息显示,可是商家给我的例程里就是88,816两种字体的格式,我的屏幕是0.91寸的8*16的字体显示上感觉特别丢丢儿小,我就想整个大的,哎,只怪直接学习习惯不好,总是学一半,绕了好大一圈,才搞好,想写一篇博客,时刻提醒踏实学习,第一次写博客,小白一枚,勿喷。。 OLED屏幕驱动程序功能 我们对Markdown编辑器进行了一些功能拓展与语法支...

qq_44886611的博客 7781

Hadoop核心技术知识总结

Hadoop核心技术的课程总结主要涵盖了Hadoop的基本概念、核心技术模块以及其在大数据处理领域的优势和应用。首先,Hadoop是一个由Apache基金会开发的分布式系统基础架构,主要用于解决大数据集的存储和计算分析问题。它使用Java语言开发,具有跨平台性,并且是开源的。Hadoop运行在廉价机器上,并考虑到机器故障是常态,因此具有高可靠性和容错性。它利用集群的CPU的并发和计算能力,提供了高性能的处理能力。

m0_74198026的博客 2380

001-基础入门-Web演示源码&资源&工具箱等

小迪安全2023笔记

wushangyu32335的博客 4260

【自动驾驶控制算法】 第一讲 绪论

声明【自动驾驶控制算法】系列是博主对所分享教学内容的学习笔记,并且该系列每篇博客都会将博主听课后总结的纸质版笔记附于文末,供大家参考。是一位研究汽车领域,无人驾驶方向及其相关方向的大佬,也算是博主在无人驾驶方向的启蒙老师。所以研究相关领域的朋友推荐去听一听他的视频讲解。...

iamtbon_1的博客 1796

hadoop核心知识点总结

1、  安装hadoop需要配置的hadoop中的配置文件有哪些? hadoop-env.shyarn-env.shcore-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xmlslaves 2、  Hadoop的核心模块和相应的进程 HDFS:namenode,datanode,secondarynameno

wl1411956542的博客 7350

【open judge】【程设】魔兽世界三开战!

#程设 魔兽世界三---开战!--------原以为会很容易ac,没想到写了好久,看来自己的水平还是亟待提高啊!有几个比较有趣的点:1. typeid(#include&lt;typeinfo&gt;)还是比较好用的,特别是本题当战士为wolf,iceman, dragon, ninja时有特殊技能,那么用typeid判断一下就很方便了。2. 对于这种输出很复杂的问题,往往通过使用文件的输入输出再...

weixin_40841416的博客 6073

Hadoop从入门到进阶之HDFS核心概念及集群搭建(一)

概述:Hadoop自带一个称为HDFS的分布式文件系统,即 Hadoop Distributed Filesystem。在非正式文档或旧文档以及配置文件中,有时也简称为DFS,它们是一回事儿。HDFS是 Hadoop的旗舰级文件系统,也是本章的重点,但实际上Hadoop是一个综合性的文件系统抽象,因此接下来我们将了解将 Hadoop与其他存储系统集成的途径,例如本地文件系统和 Amazon S3系...

qq_34125999的博客 5246

Truncated SVD for faster dection

Truncated SVD方法最先被提出在《Fast R-CNN》论文中,用于降低全连接层的运算量,提升模型的速度。在卷积神经网络的分类任务中,FC层的运算速度远远大于CONV层,而在Fast R-CNN的目标检测任务中,大多数的运算时间发生在FC 的运算中,是因为针对每张输入图片,只进行一次卷积操作,而要对生成的Region Proposal,大致两千个,进行全连接操作进行分类与Bounding...

weixin_35747666的博客 1535

三维模型转变为点云模型的好工具——CloudCompare使用小记

普通三维模型能够直观地展示物体的三维全貌,但是在一些场合需要将三维模型变为相应的点云模型进行展示,而使用激光雷达等传感器采集到的点云信息往往只能反应模型表面的情况,或是使用PCL库中的可执行文件进行转换,这两种操作较为麻烦。笔者最近就遇到了这样一个情况,找到了一个名叫CloudCompare(CC)的软件,能够支持将多种文件格式的三维模型转变为点云模型。以下将本人在使用过程中所使用到的一些操作简记下来供朋友们和将来的自己参考。 一、下载 CloudCompare是一款免费软件,其可以在CloudComp

hdlwyt的博客 2万+

Hadoop入门(2)HDFS的核心概念和工作原理

Hadoop Hadoop生态系统 hadoop核心是HDFS(分布式存储系统)+MapReduce(分布式计算框架) Flume(日志收集,常用于推荐系统的数据收集) Sqoop(数据转移,用于两个数据库的数据转移传递) Storm(数据分析,即时计算,不同于hadoop的批量计算) Ambari(简化Hadoop复杂操作的工具) Mapreduce(解决数据计算问题,但...

aic1999的博客 2316

高并发网络爬虫实践(欧赔、亚盘、大小指数数据爬取)

本文通过对一个实战化的高并发网络爬虫脚本进行深度模块化剖析,展示了如何构建一个兼具性能、健壮性和易用性的数据采集工具。核心设计思想总结模块化与单一职责: 每个函数都专注于解决一个特定问题,无论是网络请求、数据解析还是文件操作。并发与效率: 通过ThreadPoolExecutor实现了高效的并发抓取,极大缩短了总耗时。健壮性与容错: 强大的重试机制、细致的异常处理和线程安全的文件写入,保证了程序在复杂网络环境下的稳定运行。断点续传: 精心设计了进度记录与恢复机制,使得大规模抓取任务变得轻松可控。

猫敷雪 480

Hadoop YARN 框架的入门知识(整体架构、核心概念、工作原理、应用示例)

YARN = Hadoop 的资源管理 + 作业调度平台。它让不同的计算框架(MapReduce、Spark、Flink)都能在同一个集群上高效运行。

学亮编程手记 740

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

大数据技术入门:从核心概念到主流框架(Hadoop/Spark/Flink/Kafka)全景解析

大数据技术是应对海量、高速、多样、低价值密度数据挑战的综合技术体系,其核心在于通过分布式架构解决传统数据库在存储与计算上的扩展性瓶颈。从概念上讲,它涵盖了从数据采集、存储、处理到应用的全链路。在技术原理层面,以Hadoop的HDFS和MapReduce为代表的分布式存储与计算思想奠定了基石,而Spark凭借其内存计算和统一引擎成为批处理领域的事实标准,Flink则以其真正的流处理能力领跑实时计算领域。这些技术的工程价值在于构建了稳定、高效、可扩展的数据处理管道,支撑起从离线分析、实时监控到机器学习等广泛的应

weixin_29035405的博客 287

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Hadoop入门教程

Hadoop入门教程 生命无罪,健康万岁,我是laity 分布式和集群的概念 分布式:多台机器,每台机器上部署不同组件。 集群:多台机器,每台机器上部署相同组件。 Hadoop核心组件 HDFS :分布式文件存储系统,用于解决海量数据存储 YARN :集群资源管理和任务调度框架,用于解决资源任务调度 MapReduce :分布式计算框架,用于解决海量数据计算。 HDFS 的shell 博客 基础命令 hadoop fs -ls file:/// # 操作本地文件系统 hadoop fs -ls h

Laity 3308

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

给大家介绍几个Hadoop入门经典教程

不多说直接贴上连接: ① Hadoop基础介绍 ② Hadoop入门学习 ③ Hadoop学习二章 ④ Hadoop学习图文教程

Smile_Miracle的博客 2239

零基础小白如何自学 Hadoop:从入门到掌握分布式系统核心技术

自学Hadoop需要结合理论与实践,从了解大数据的基本概念开始,逐步深入Hadoop的核心组件和生态系统。通过实际项目巩固知识,掌握性能优化技巧,并结合其他大数据工具形成综合技能。坚持不懈,你将从零基础成长为一名Hadoop大数据开发者!Hadoop是一个开源的大数据处理框架,适用于分布式存储与计算。如果你是零基础小白,以下是一份详细的学习指南,帮助你从入门到掌握Hadoop。通过上述路径,零基础小白也可以在系统学习后逐渐成为Hadoop专家!

小宝哥Code的专栏 1091

Hadoop入门部署最佳实践

最近因为要使用Apache下的开源项目mahout做一些文本数据挖掘研究,要研究Hadoop分布式平台。 本文主要介绍hadoop基本入门概念,各实体含义及其作用。 并参考使用Hadoop 的版本r0.20.203.0,介绍简单集群部署入门,以及结合IDE开发入门实践。 Hadoop简介 Hadoop官网介绍,主要三个子项目: Hadoop Common: Hadoop核

wxzhs的专栏 699

Hadoop入门

Hadoop入门概念一、Hadoop定义Hadoop是一个提供分布式存储和计算的软件框架,它具有无共享、高可用、弹性可扩展的特点,非常适合处理海量数据。 ASF(Apache软件基金会)对Hadoop的定义:Hadoop软件库是一个框架,允许在集群中使用简单的编程模型对大规模数据集进行分布式计算,它被设计为可以从单一服务器扩展到数以千计的本地计算和存储的节点,并且Hadoop会在应用层面检测和处理错

Lilyの博客 ٩(❛ัᴗ❛ั) 424
上一篇: Hive快速入门
下一篇: Spring Boot入门系列之:一、Spring Boot简介及快速入门
exklin
博客等级 码龄9年 35粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值