大数据学习笔记500条【第二弹】,记得收藏!

大数据学习笔记500条【第二弹】,记得收藏!_第1张图片

501. MapReduce计算框架中的输入和输出的基本数据结构是键-值对。

502. Hadoop神奇的一部分在于sort和shuffle过程。

503. Hive驱动计算的“语言”是一XML形式编码的。

504. Hive通过和Jobtracker通信来初始化MapReduce任务(Job)。

505. Metastore(元数据存储)是一个独立的关系型数据库。

506. Pig常用于ETL(数据抽取、数据转换、数据装载)。

507. Hadoop团队通常会将Hive和Pig结合使用。

【大数据开发学习资料领取方式】:加入大数据技术学习交流群522189307,点击加入群聊,私信管理员即可免费领取

508. Hive无法提供数据库特性(如行级别更新,快速查询响应和支持事务)。

509. HBase的设计灵感来自goole的bigTable。

510. HBase面向列存储,列组成列族。

511. HBase对每个列保留多个版本。

512. HBase使用HDFS来持久化存储数据。

513. 将程序设计成驱动,比较方便移植。

514. HBase没有提供SQL语言。

515. Hadoop面向批处理系统。

516. CLI是我们使用Hive的最常用方式。

517. Jobtracker管理着Job,而HDFS则由namenode管理。

518. 元数据存储中存储了表的模式和分区信息等元数据。

519. Hive会将输出写到标准输出中。

520. –e执行字符串包含的命令。

521. –s去掉ok。

522. –f执行文件。

523. 如果查询中的表名和这个例子并不相关,我们有时候会使用src。

524. 用户可以使用上下键来滚动查询历史命令。

525. 用!执行bash shell命令。

526. Hive Cli 可执行Hadoop的dfs命令。

527. Hive本身提供了不同时区互相转换的内置函数。

528. Hive中的列支持使用strct、map和arry集合数据类型。

529. Hive中并没有键的概念。

530. Hive不会再数据加载时进行验证,而是在查询时进行。

531. Hive中数据库的概念本质上仅仅是表的一个目录式命名空间。

532. Hive会为每个数据接库创建一个目录。

533. 数据库的文件目录名是以.db结尾。

534. Hive中并没有嵌套数据库的概念。

535. Hive不允许用户删除一个包含有表的数据库。

536. Hive会自动增加两个表属性:last_modified_by|last_modified_time。

537. Hive总是将创建的表的目录放置在这个所属的数据库目录之后。

538. Show tables命令可以列举出所有的表。

539. 管理表(内布表)不方便和其他工作共享数据。

540. Exte Nal告诉Hive这个表示外部表。

541. Location 告诉Hive数据位于哪个路径下。

542. 因为表示外部的,所以Hive并非人为其完全拥有这份数据。

543. 有些Hive QL并不使用外部表。

544. 分区字段,表现得旧和普通的字段一样。

545. 对数据进行分区,也许最重要的原因是为了更快地查询。

546. 通过show partitions命令查看表中存在的所有分区。

547. Hive没有行级操作。

548. Hive通常指定的路径应该是一个目录,而不是单独的文件。

549. Hive要求源文件和目标文件以及目录应该在同一个文件系统中。

550. 指定overwrite关键字,目标文件之前存在的会被删除。

551. Hive并不会验证用户装载的数据和表的模式是否匹配。

552. Hive会验证文件格式是否和表结构定义的一致。

553. INSERT语句允许用户通过查询语句向目标表中插入数据。

554. 静态分区键必须出现在动态分区键之前。

555. Hive中没有临时表的概念。

556. Select是sql中的射影算子。

557. 可用正则来选举我们想要的列。

558. Float和double相比较会出现问题。

559. RLike可用正则指定匹配条件。

560. Hive目前不支持on中的or。

561. 视图可以允许保存一个查询并像对待表一样对这查询进行操作。

562. Hive值有有限的索引功能。

563. Bitmap索引普遍应用于排重后值较少的列。

564. Hive中分区的功能是非常有用的。

565. 每个task都是一个新的Jvm实例,都需要开启和销毁的开销。

566. 分区提供一个隔离数据和优化查询的便遍历的方式。

567. 分桶是将数据集分解或更容易管理的若干部分的另一种技术。

568. Hive提供了serde抽象,其用于从输入中提取数据。

569. 一个serDe通常是从左向右进行解析的。

570. Hive提供了一个列式SerDe来以混合列式格式存储信息。

571. Hive中通常使用“UDF”来表示任意的函数(用户自定义函数)。

572. Streaming提供了另一种处理数据的方式。

573. Hive中文件格式间具有明显的差异。

574. Hive文本文件格式选择和记录格式是对应的。

575. SequenceFile可以在块级别和记录级别进行压缩。

576. 对于列式存储而言,进行压缩通常会非常高效。

577. Hive功能强大的一个方面体现在不同的存储格式间转换数据非常地简单。

578. SerD是序列化/反序列化的简写形式。

579. Hive引擎使用定义的InputFormat来读取一行数据记录。

580. Thrift是一个软件框架,其用于跨语言的服务开发。

581. HiveServer使用Thrift提供服务。

582. 存储处理程序是一个结合InputFormat、OutPutFormat、SerDe和Hive需要使用的特定的代码。

583. 存储处理程序负责从底层存储系统中读取或写入数据。

584. Hadoop起源于Apache Nutch的子项目。

585. HBase弥补了Hadoop只能离线批处理的不足。

586. HBase能够存储小文件,提供海量数据的随机检查。

587. 大数据强调3v特征:即Volume(量级)、Varity(种类)和Velocity(速度)。

588. 结构优化,质量提高,是一种实现实质性的跨越式的进程。

589. NoSQL是Not only SQL,泛指非关系型数据库。

590. NoSQL的实现具有两个特征:使用硬盘和把随机存储器作存储载体。

591. NoSQL的Cache是记录级的,是一种粗粒度的Cache。

592. NoSQL无须事先为要存储的数据建立字段,随时可以存储自定义的数据格式。

593. HBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库。

594. HBase是NoSQL数据库。

595. HBase可以通过行健(RowKey)检索数据,仅支持单行事务,主要用于存储非结构化和半结构化的松散数据。

596. HBase的单表可以有百亿行,百万列。

597. HBase是面向列的存储和权限控制,并支持列独立检索。

598. HBase严重依赖Hadoop的HDFS组件。

599. MapReduce可以直接访问HBase。

600. HBase中最重要的访问方式是原生Java API。

601. 客户端Client是整个HBase系统的入口。

602. HMaster主要负责Table和Region的管理工作。

603. HRegionServer主要负责响应用户I/O请求。

604. HStore存储是HBase存储的核心。

605. HStore两部分:Memstore和StoreFile。

606. 当StoreFile文件增长到一定阀值,会触发CompCut。

607. HBase的同一个表的记录可以有不一样的列。

608. HBase中最基本的单元是列。

609. 每一个行的行健是唯一的。

610. HBase中的表有若干行,每行有很多列,列中的值有多个版本,每个版本的值称为一个单元格,单元格存不同的列值。

611. HBase称为无模式数据库的原因是HBase的表没有列定义,没有类型。

612. 创建连接是一项非常消耗资源的工作。

613. HBase为我们提供了一个连接池。

614. 行键是按字段排序由低到高存储在表中。

615. HBase中行键是唯一的索引。

616. HBase中的列族是一些列的集合。

617. 一个列族中所有列成员有着相同的前缀。

618. 一个列族的成员在文件系统上都是存储在一起的。

619. 在创建表的时候至少指定一个列族。

620. 修改列族要先停用表。

621. HBase中的单元格由行键、列族、列、时间戳唯一确定。

622. 单元格的内容是不可分别的字节数组。

623. 每个单元格都保存着同一份数据的多个版本。

624. 时间戳是64位的整数。

625. HBase对数据模型4个操作包括:Get、Put、Scan和Delete。

626. 多用户多线程对统一行的读写操作都不会影响该行数据的原子性。

627. Get方法获取数据时,HBase返回的结果包含所有匹配的单元格数据。

628. Result实例中包含列族、列限定符和时间戳等。

629. Put操作要么向表增加新行,要么更新行。

630. Put操作每次都会发起一次到服务器的RPC操作。

631. HBase客户端有一个缓冲区,大大提高写入性能。

632. HBase提供compare-and-set先检查,再执行。

633. HBase没有update操作。

634. Scan操作允许多行特定属性迭代。

635. HBase的Delete操作可以指定删除某个列族或者某个列,或某时间更早的数据。

636. HBase的Delete操作并不是真正地从磁盘删除数据。

637. RowKey、Column、Version组合在一起称为HBase的一个单元格。

638. Version用一个长整型表示(时间)。

639. Get是在Scan的基础上实现的。

640. 一个put操作会为一个Cell创建一个版本,默认使用当前时间戳。

641. 删除操作的实现是创建一个墓碑标记。

642. Get和Scan操作返回的是经过排序的数据。

643. 返回的数据首选按行字典序排序,其次是列族、然后是列修饰符,最后的时间戳逆序。

644. 获取列族的完整列名的唯一方法是处理所有行。

645. HBase不支持连接查询,即Join查询。

646. ICV(HBase计数器)操作发送在RegionServer上。

647. 事务特性ACID,如HBase这种NoSQL数据库仅提供对行级别的原子性。

648. HBase不是一个具备完整ACID特性的数据库。

649. HBase中一个表的数据会被划分成很多的Region。

650. 刚刚穿件的表只有一个Region。

651. 每一个Region由一个RegionServer管理。

652. 每个Region包含起始RowKey的记录,不包含结束RowKey的记录。

653. Region的拆分与转移是由HBase自动完成。

654. CAP原理是数据库软件的理论基础。

655. HBase为了扩展性和性能考虑,弱化了事务性。

656. RowKey是不可分割的字节数,按字典排序由低到高存储在表中。

657. RowKey决定了访问HBase表时可以得到的性能。

658. Region基于Rowkey为一个区间的行提供服务。

659. Hfile在硬盘上存储有序的行。

660. HBase只能在RowKey上建立索引。

661. RowKey优化:

1. 字典排序

2. 进行散列

3. 尽量短

662. 列族是一些列的集合。

663. 一个列族的所有列成员有着相同的前缀。

664. 列族的前缀必须是可输出的字符。

665. 列族必须在表建立的时候声明,列在用户随时可以创建。

666. 在物理上,一个列族的成员在文件系统上都存储在一起。

667. Flush和Compaction操作式针对一个Region的。

668. 考虑Flush性能,列族数量越少越好。

669. HFile数据块大小可以在列族层次设置。

670. 数据块索引存储每个HFile数据块的起始键。

671. 布隆过滤器(Bloom Filter)允许对存储在每个数据块的数据做一个反向测验。

672. HFile可以被压缩并存放在HDFS上。

673. HBase的每个单元格只维护三个时间版本。

674. CRUD操作式HTable最基本的功能,其中的每类方法都包含多种实现。

675. Java客户端有两种查询数据的方式:单行读和扫描读。

676. 每类操作的不同实现方法应用在不同的场景下。

677. HBaseAdmin类是HBase数据库的管理入口类。

678. Scan类中的主要实现方法可以划分成三类:

1. 添加列或列族

2. 设置查询属性

3. 查看属性信息

679. 整个删除过程分为三步:

1. 初始化Table实例

2. 构造实体类Delete,Delete封装行键、列族或列名

3. 执行删除

680. HBase提供了若干封装类用于“无缝”连接MapReduce。

681. 从HBase表汇总读取数据,使用MapReduce计算完成之后,将数据存储到其他介质中。

682. NoSQL不使用SQL作为查询语言。

683. 创建外部表适用于某表HBase已经存在,但在Hive中没有相关信息。

684. 字符串类型是Redis中最基本的数据类型。

685. 所有Redis命令都是原子操作。

686. Redis提供了4个命令可以直接对二进制位进行操作。

687. Redis是采用字典结构以键值对的形式存储数据的。

688. 一个散列类型键可以包含至多2的32次方减去1个字段。

689. 散列类型适合存储对象。

690. 大数据所面对的问题是:一是存储,二是计算。

691. 大数据的定义是发现潜在规律和趋势。

692. 谷歌三大论文:1)GFS、2)MapReduce、3)BigTable。

693. Hadoop是一个批处理系统,不擅长实时计算。

694. YARN是通用的资源管理系统。

695. 机器学习算法通常需要对同一个数据集合进行多次迭代计算。

696. RDD弹性分布式数据集(Resillient Distributed DataSet)。

697. Spark支持检查点(checkpoint)的容错机制。

698. RDD支持的方法:

1. 转换(Traansformation) ——生产新的RDD

2. 动作(Action)         ——返回一个非RDD

699. Spark没有存储能力,仅做数据仓库。

700. MapReduce依附于Yarn来运行。

701. Zookeeper的节点必须是奇数个。

702. Standalone模式下,集群可以容许某一个或多个工作节点失效。

703. Hadoop:HDFS、MapReduce、YARN。

704. Spark可以单独使用HDFS或YARN。

705. 由YARN统一负载分配资源科避免分配混乱。

706. Spark程序由master还是YARN来调度执行,是由spark程序在提交时决定的。

707. 只有在交互需求是才使用yarn-client方式。

708. 切片,本地模式默认去CPU的核算。

709. 每个Job的执行,都会经历序列化,网络传输,反序列化和运行的过程。

710. 在序列化是,spark会将Job运行所依赖的变量、方法(称为闭包)全部打包在一起。

711. 如果RDD多次迭代,可将其持久化。

712. 在Zookeeper模式下,恢复期间新任务无法提交。

713. RDD特点:1)只读、2)可缓存、3)可以通过重新计算得到。

714. Kafk是一个分布式、分区、重复提交的日志服务。

715. Kafka掌管的类别消息叫做主题(topics)。

716. 生产者发布消息到kafka主题中。

717. 消费者订阅主题以及处理发布的消息。

718. Kafka每个服务器叫做broker。

719. 主题是一个类别或者被发布消息的名称。

720. Kafka集群根据时间保留消息,而不是是否被消费。

721. 消费者可以随时添加和移除。

722. 生产者发布数据到他们选定的主题上。

723. 消费者、消息处理通常有两种模式。:队列和发布-订阅。

724. 在队列模式中,一组消费者可能从服务器读取消息,每个消息被其中一个消费者消费。

725. 在发布-订阅模式中:消费者是广播到全部的消费者中。

726. 消费者用一个消费组名称来标识自己。

727. Kafka能够提供顺序保证并在一组消费者处理过程中均衡负载。

728. Kafka可以替换传统的消息代理。

729. Kafka可以媲美传统的消息系统例如:ActiveMQ和RabitMQ。

730. Kafka通常用于操作监测数据的处理。

731. Kafka作为日志聚合的一种解决方案。

732. Zookeeper典型应用场景:配置文件的管理,集群管理,分布式队列,同步锁leader选举,队列管理等。

733. Zookeeper是分布式服务框架。

734. dataMonitor类是本程序Zookeeper逻辑的核心。

735. Zookeeper是一个基于观察者模式设计的分布式服务管理框架。

736. 分布式应用中通常需要有一套完整的命名规则。

737. Netty高性能的NIO框架。

738. Netty快速开发高性能,高可靠性的网络服务器和客户端程序。

739. Netty是一个网络通信框架。

740. NIO是一个面向块的I/O系统。

741. NIO核心对象:缓冲区(Buffer),通道(Channel),选择器(Selecter)。

742. 在NIO库中,所有数据都是用缓冲处理的。

743. Netty是事件驱动的。

744. Git是一个开源的分布式版本控制系统。

745. Kafka系统的角色:

1. Borker:一台kafka服务器就是一个broker。

2. Topic:可以理解为一个MQ消息队列的名字。

746. Java程序设计语言、虚拟机、API类库统称JDK。

747. Jdk是用于支持Java程序开发的最小环境。

748. JRE是支持Java程序运行的标准环境。

749. Java技术体系可分为4个平台:Java Card、Me、Se、EE。

750. Hadoop每个切片构建一个map任务。

751. Map输出是中间结果,reduce产出最终输出结果。

752. 集群上的带宽限制了MapReduce的作业的数量。

753. HDFS中fsck指令可以显示块信息。

754. Namenode之间需要通过高可用的共享存储实现编辑日志的共享。

755. Datanode需要同时向连个namenode发送数据块处理报告。

756. 超级用户是namenode进程的标识。

757. Seek()方法是一个相对高开销的操作。

758. FileSystem是一个通用的文件系统Api。

759. HDFS只允许对一个打开的文件顺序写入,或者在现有文件的末尾追加数据。

760. FileStatus封装了文件系统中问价和目录的元数据。

761. 过滤器有path表示,只能作用域文件名。

762. Hadoop无法自行第一网络拓扑结构。

763. DFSoutputstream将写入分成一个个的数据包,并写入内部队列,称为“数据队列”。

764. 文件系统的一致模型描述了文件读/写的数据可见性。

765. HDFS为性能牺牲了一些Posix要求(可移植操作系统接口)。

766. HDFS提供一个方法来使所有缓存与数据节点强行同步。

767. Flume是一个将大规模流数据导入HDFS的工具。

768. Flume节点允许以任何拓扑方式进行组织。

769. 当一个字段中包含多个类型时,ObjectWritable非常有用。

770. Avro是一个独立于编程语言的数据序列化系统。

771. Avro模式通常用Json来写,数据通常采用二进制格式来编码。

772. Avro数据文件时可切分的,适合MapReduce快速处理。

773. SeQuenceFile是可以看做小文件的容器。

774. MapFile是已经排序过的SequenceFile,它有索引,所以可以按键查找。

775. Hadoop提供了钩子(hook)来辅助分析过程。

776. Mini集群广泛应用于Hadoop自带的自动测试包中。

777. 作业历史包括已完成作业的时间和配置信息。

778. MapReduce任务日志可以从web界面访问。

779. 复杂的作业通常是增加更多的作业,而不是增加作业的复杂度。

780. Jobcontrol的实例表示一个作业的运行图。

781. 在Ooize中,工作流是一个由动作(action)节点和控制流节点组成的DAG。

782. Ooize提供了一组与工作流交互的函数。

783. TaskRunner启动了一个新的Jvm里运行每个任务。

784. YARN将Jobtracker的职能划分多个独立的实体。

785. YARN集群上可以运行不同版本的MapReduce。

786. 每个map任务都有一个环形内存缓存区用于存储任务的输出。

787. 在本地作业运行器上运行时,只支持0个或1个reduce。

788. 一个输入切片(split)就是一个由单个map操作来处理的输入块。

789. 切片并不包含数据本身,而是指向数据的引用。

790. Jobtracker使用其存储位置信息来调度map任务从而在tasktracker上处理这些切片数据。

791. Reduce输入的键一定是有序的。

792. Hadoop为每个作业维护若干内置计数器,以描述多项指标。

793. 任务计数器由其关联任务维护,并定期发送给tasktracker,再有tasktracker发送给Jobtracker。

794. “边数据”是作业所需的额外的只读数据。

795. Hadoop还为mapper和reduce提供了一个包含了常用函数的库。

796. Hadoop使用dfs。Mapred,rpc和jvm四个上下文根。

797. FileContext将度量写到一个本地文件中。

798. Ganglia是一个针对超大规模的开源的分布式监控系统。

799. Hadoop包括多个托管bean(MBean),可以将hadoop度量发布给支持JMX的应用。

800. Didtcp是一个理想的备份工具。

801. HDFS能够容忍datanode故障,但这并不意味着允许随意终止datanode。

802. Shell for((i0;i

803. Break n跳出几层循环。

804. For I in {1 .. 4}。

805. Unset 删除一个元素。

806. Nohup 保持后台允许。

807. >覆盖,>>追加。

808. 0、1、2标准输入正确,错误输出。

809. Ls >/de/null 深渊。

810. Linux默认无回收站。

811. –e执行转义字符。

812. Fsimage:元数据镜像文件。

813. 目前HDFS不支持断点续传。

814. 最后块不足够,则按实际打下存储。

815. HAR是一个目录结构。

816. Namenode两种状态:Active和standly。

817. Namenode同步数据通过Journanodes集群。

818. Namenode切换,自动和手工切换。

819. MapReduce是分布式并行计算模型,用于解决海量数据问题。

820. Hive操作流程:

1. 提交SQL 交给驱动

2. 驱动编译解析相关字段

3. 去metastore查询相关信息

4. 编译返回信息,发给驱动

5. 驱动发一个执行计划

6. DDLS对数据库表操作

7. 吧Job交给Jobtracker让tasktracker执行

8. 完成Job返回数据信息,找namenode查数据

9. Dfs ops直接和namenode交互

821. Hive dfs ls 查看hadoop系统。

822. Hive无删除语句,用replace实现。

823. Replace很危险,不建议使用。

824. Hive删字段,大多数情况重建表。

825. 桶表时对数据进行哈希取值,然后放到不同文件中存储。

826. 桶表应用于抽样查询,加载文件分文件存储。

827. 使用视图可以降低查询复杂度。

828. 索引是对数记录偏移量。

829. 分区字段字段建索引。

830. 建索引会引发MapReduce计算。

831. 装载数据:1)本地文件加载方式,2)查询装载。

832. 动态分区加载方式。

833. Hive是读模式。

834. RDBMS是写模式。

835. Hive不支持对单行操作,只支持覆盖和追加。

836. 每个HStore对应了Table中的一个列族的存储。

837. HStore是HBase存储的核心:HFile、memstore。

838. HLog用于数据还原。

839. HFile是不定长的。

840. CSV是逗号分隔符的文件。

841. Hive分析HBase,只要表映射即可。

842. 列族优化:

1. 随机查询:数据块越少,索引越大,占用内存也越大

2. 顺序查询:更好的顺序扫描需要更大的数据块

843. 布隆:有问题反馈,无问题不反馈。

844. HBase删除数据时先标记合并删除。

845. HBase热点优化,创建分区。

846. Solr可以实现全文搜索。

847. Solr可以方便实现站内搜索功能。

848. Solr是通过http协议处理搜索和查询请求。

849. Solr是一个索引库。

850. 线性的访问磁盘,很多时候比随机访问内存块。

851. Kafka将数据分段,为每个段建立索引。

852. 索引分两部分:offset和position。

853. Storm处理高频数据和大规模数据。

854. Storm由用户自定义处流程。

855. Stream ——一列火车。

856. Tuple  ——一节车厢。

857. 数据  ——乘客。

858. Bolt   ——对tuple中数据进行处理 中间站。

859. Spout  ——源头,相当于火车的始发站。

860. Toplogy ——轨道。

861. Storm 主-从结构。

862. 主节点:nimbus,负责分发代码,分配任务。

863. 从节点:supervisor,负责产生worker,执行任务。

864. Storm集群的运行依赖于Zookeeper。

865. Executor是一个被worker进程启动的单独线程。

866. Task是最终运行spout或bolt中代码的执行单元。

867. Slots就是work进程。

868. 将数据按类型分组。

869. Storm流分组:1)随机 负载均衡,2)字段 类型分组。

870. Work挂掉,storm会重新启动一个进程,数据不会丢失。

871. Storm不支持HA(目前)。

872. 每个work都有一个ack/fail确认机制。

873. Trident是对storm进行封装的一个框架。

874. ES也是对Luncene的封装,天生为分布式而生。

875. ES基于Restful接口。

876. Hadoop RPC调用是基于Probobuf实现的。

877. Client protocol定义了所有由客户端发起的,由namenode响应的操作:

1. HDFS文件读相关的操作

2. HDFS文件写以及追加写的相关操作

3. 管理HDFS命名空间(namenode)的相关操作

4. 系统问题与管理相关的操作

5. 快照相关操作

6. 缓存相关操作

7. 其他

878. FileSystem:

1. HDFS文件读操作

2. HDFS文件写与追加操作

3. 命名空间的管理操作

879. DFSAdmin:对系统问题管理相关操作。

880. 处于安全模式(safemode)中的namenode不接受客户端对命名空间的修改操作,只读。

881. 刚刚启动的namenode直接自动进入安全模式。

882. 必须在安全模式的两个操作:

1. ‘-savenamespace’用于将整个命名空间保存到新的fsimage文件中

2. ‘-rolledits’则会触发重置editlog文件

883. Refreshnodes()方法会触发namenode刷新数据节点列表。

884. Findizeupgrade()和rollingupgrade()操作都是与namenode升级相关。

885. 快照保存了一个实践点上HDFS摸个路径中所有数据的拷贝。

886. 快照可以将失效的集群回滚到之前一个正常的时间点上。

887. 创建快照之前,先开启目录的快照功能。

888. HDFS 2.3版本添加了集中式缓存管理功能:

1. Cache directive:表示要被缓存到内存的文件或目录

2. Cache pool:用于管理一系列的cache directive类似于命名空间

889. Datanode使用DatanodeProtocol接口与namenode握手注册,发送心跳进行全量以及增量的数据汇报。

890. DatanodeProtocol三种方法类型:

1. Datanode启动相关

2. 心跳相关

3. 数据块读写相关

891. Datnode启动操作会与namenode进行四次交互:

1. 与namenode握手

2. 注册上的datanode

3. 汇报数据块

4. 缓存所有数据块

892. 分布式系统的节点之间大多采用心跳维护节点的健康状态。

893. InterDatanodeProtocol(DN与DN之间接口),主要用于租约恢复操作。

894. 客户端打开一个文件进行写操作是,首先获取租约,并定期更新租约。

895. NamenodeProtocol定义了第二namenode与namenode之间的接口。

896. HDFS除了RPC调用还定义了流式接口(TCP/HTTP)。

897. Hadoop RPC不足以支持大文件读写。

898. HDFS客户端读取一个HDFS文件流程 :

1. 打开HDFS文件

2. 从namenode获取datanode地址

3. 连接到datanode读取数据块

4. 关闭输入流

899. 数据块的应答包中不仅包含了数据,还包含了校验值。

900. HDFS客户端写入一个HDFS文件的流程:

1. 创建文件

2. 建立数据流管道

3. 通过数据流管道写入数据

4. 关闭输入流并提交文件

901. HDFS追加文件流程:

1. 打开已有的HDFS文件

2. 建立数据流管道

3. 通过数据流管道写入数据

4. 关闭输入流并提交文件

902. 对于命名空间的一致性,两个namenode都需要与一组独立运行的节点(Journalnode,JNS)通信。

903. ZKFailovercontroller负责维护HA。

904. RPC(Remote Procedure Call protocol),远程过程调用协议。

905. Hadoop RPC框架底层采用Java NIO,Java动态代理以及protobuf等。

906. RPC框架:

1. 通信模块

2. 客户端stub程序

3. 服务器端stub程序

4. 请求程序

5. 服务程序

907. 客户端的stub可以看作是一个代理对象。

908. Hadoop RPC 框架的使用抽象:

1. 定义RPC协议

2. 实现RPC协议

3. 客户端获取代理对象

4. 服务端启动并构造RPC servers

909. Namenode:

1. 文件系统目录树管理

2. 数据块以及数据节点管理

3. 租约管理:namenode给予租约持有者在规定时间内拥有文件权限的合同

【大数据开发学习资料领取方式】:加入大数据技术学习交流群522189307,点击加入群聊,私信管理员即可免费领取

4. 缓存管理

5. Fsnamesystem

Namenode的启动和停止

910. HDFS文件系统的命名空间是以/为根的整个目录树,是通过FSDirectory类来管理的。

911. HDFS中文件与目录都被当做系统目录树的一个INode节点。

912. HDFS会将命名空间保存到namenode的本地系统上一个叫fsimage的文件汇总。

913. FSDirectory维护者文件系统目录树的节点。

914. INode get方法:

1. Username

2. Groupnode

3. Fspermission

4. Allfeature:安全相关

5. Modification

6. Accesstime

7. Sattrfeature:扩展属性

915. HDFS的检查点机制会定时将editlog文件与fsimage文件合并以产生新的fsimage文件。

916. 非HA,检查点操作由secondary namenode来执行。

917. Namenode维护着HDFS中连个最重要的关系:

1. HDFS文件系统的目录树以及文件的数据块索引

2. 数据块和数据节点的对应关系

918. 当namenode发生错误并今夕了Active与standly切换时,多余的副本不能直接删除,先汇报再从队列中移除。

919. 数据块副本状态:

1. 正常副本

2. 损坏副本

3. 多余副本

4. 等待删除副本

5. 等待删除副本

6. 等待复制副本

7. 正在复制副本

8. 推迟操作副本

920. 数据副本的删除情况:

1. 数据块所属的HDFS文件被删除

2. 数据块的副本数量多于配置表

3. 副本被namenode标记损坏副本

921. 在HDFS中,客户端写文件时需要先从租约管理器中申请一个租约。

922. Namenode启动时会首先加载命名空间镜像并合并编辑日志。

923. 预防脑裂,HDFS提供三个级别的隔离机制:

1. 共享存储隔离

2. 客户端隔离

3. Datanode隔离

924. HA管理命令的执行是由HAAdmin为负责的。

925. Namenode三个类:

1. Namenode类

2. nameNode Rpcserver

3. FSNamesystem类

926. 块池:一个块池由属于同一个命名空间的所有数据块组成。

927. 命名空间卷:一个namenode管理的命名空间以及它对应的块池一起被称为命名空间卷。

928. 每个块池都是一个独立的数据块集合。

929. Datanode从逻辑上可切分几个模块:

1. 数据层

2. 逻辑层:向NN汇报,心跳,扫描损坏数据块

3. 服务器

930. Datanode升级需要考虑:

1. 版本兼容性问题

2. 升级消耗的硬盘空间问题

3. 回滚要求

931. Datanode两个管理功能:

1. 管理与组织磁盘存储目录

2. 管理与组织数据块及其元数据文件

932. Storedirectory:

1. 获取文件夹相关

2. 加锁/解锁

3. 存储状态恢复

933. 集中式缓存由分布在datanode上的对外内存组成,同时被namenode统一管理。

934. 数据包:

1. 数据包头

2. 校验数据

3. 实际数据

935. Java NIO零拷贝模式。

936. Datanode扫描器同期验证datanode上存储的数据块正确性。

937. HDFS目前提供三个客户端接口:

1. distributedFileSystem

2. FSShell

3. DFSAdmin

938. DFSClient是用户使用HDFS各项功能的起点。

939. HDFS管理员通过DFSAdmin工具管理与配置HDFS。

940. HDFS目前实现的读操作有三个层次:

1. 网络读:socket

2. 短路读:同一节点

3. 零拷贝读:缓存转换

941. Shuffle和sort阶段负责执行两个主要动作:

1. 决定哪个reducer接收map输出的键值对(切片)

2. 并确定传输给reducer的键值对是进行排序的

942. MapReduce是基于批处理的框架,不适合实时访问数据。

943. Hadoop配置文件:

1. Hadoop-env.sh ——设置环境变量

2. Core-site.xml  ——系统级的Hadoop配置项

3. Hdfs-site.xml  ——HDFS配置

4. Mapred-site.xml ——HDFS设置

5. Master ——Hadoop的master主机列表

6. Slaves ——Hadoop的slave主机地址列表

944. Flume四个组件:

1. Nodes ——flume数据路径

2. Agents ——从本地主机上收集流数据

3. Collectors ——汇总来自代理的数据

4. Master——执行配置管理任务

945. Flume以Avro Json格式写数据。

946. Agent数据接收器是Agent数据源的目的地。

947. Flume数据源:

1. Text ——处理一次的文本文件,每次处理一行

2. Tail ——为加入文件的每行生产一个事件

3. Multitail ——tail工具支持多文件处理

4. Syslogudp ——处理syslogUDP消息

5. syslogTcp ——处理sysLogTcp消息

6. execperiodic ——任意命令定期执行,整个输出是一个事件

7. execstream ——执行任意指令,每行是一个独立事件

8. exec ——定期执行任意指令并确定整个输出的每行事件

9. scribe ——处理scrive collection 系统生产的数据

948. Collector数据接收器支持多种事件输入格式:

1. Syslog ——输出类似syslog格式的事件

2. Log4j ——输出类似Hadoop log4j 格式的事件

3. avroJson——输出进过Avro编码的json格式的数据

4. avrodata ——输出经过avro二进制编码的数据

5. debug ——仅在调试时使用

6. raw——只输出事件本身,不包含元数据

949. spark编程模型是弹性分布式数据集,他是MapReduce模型的扩展和延伸。

950. RDD记录血统,而不是真正数据。

951. Spark四类操作:

1. 创建操作:用于RDD创建工作

2. 转换操作:RDD变换成新的RDD

3. 控制操作:RDD持久化

4. 行为操作:能够触发spark运行的操作

952. 调度器安装DAG进行计算,并最终得到目标RDD。

953. RDD模型将计算分解为多个相互独立的细粒度任务。

954. Spark中提供了通用接口来抽象每个RDD

1. 分区信息:它们是数据集的最小分片

2. 依赖关系:指向其父RDD

3. 函数:基于RDD计算方法

4. 划分策略和数据位置的元数据

955. RDD操作中用户可以使用Partition方法获取RDD划分的分区数。

956. Spark中RDD计算是以分区为单位的。

957. Spark默认连个划分器:哈希分区和范围分区。

958. Hadoop中的每一个HDFS数据块都称为一个RDD分区。

959. Map/mapPartitions作用每个元素,每个分区。

960. Checkpoint将切断与该RDD之前的依赖关系。

961. Spark基本概念:

1. Application ——用户编写的spark应用程序

2. Driver ——application的main创建sparkContext

3. Cluster manager ——指在集群上获取资源的外部服务

4. Standlone ——spark原生的资源管理

5. Hadoop YARN

6. Worl ——工作节点

7. Master ——总控进程

8. Executor ——执行进程

962. Spark定义了通信框架接口,这些接口实现中调用netty的具体方法。

963. Shuffle写有基于哈希和排序两种方式。

964. Clustermanager提供了资源的分配和管理。

965. 资源分配和调度的基本单位是container。

966. 在YARN中,每个application实例都有一个application master进程。

967. Application master是application启动的第一个容器,它负责和resourceManager打交道并请求资源。

968. Spark SQL执行过程:

1. 词法和语法解析

2. 绑定

3. 优化4. 执行

969. Spark 提供了两种方式将RDD转换成DataFrame:

1. 通过定义 case class ,使用反射推断schema

2. 通过编程接口,定义schema,并应用到RDD上

970. YARN拆分Jobtracker的两大职责:资源管理,作业调度/监控:

1. 全局的resource Manager

2. 每个应用对应的Application Master

971. Resource Manager拥有为系统中的所有应用的资源分配的决定权。

972. Container为应用程序授予在特定主机上使用资源全权利。

973. YARN三种调度器:

1. FIFO调度器

2. Capacity调度器

3. Fair调度器

974. Storm一个work进程执行的是一个topplpgy的子集。

975. Executor是一个被work进程启动的单独线程。

976. Work之间通信是通过Netty进行通信的。

977. Stream grouping:

1. Shuffle ——随机分组

2. Fields ——按字段分组

3. All ——广播发送

4. Non ——随机分配

5. Diret ——直接分组

978. Task是运行spout或bolt中的线程。

979. Strom的核心:

1. 主节点 ——Nimbus

2. 工作节点——supervisor

3. 协调器——Zookeeper

4. 工作进程——worker

5. 任务线程——task

980. Storm三大应用:

    1. 信息流处理

    2. 持续计算

3. 分布式远程调用

981. 提交一个Topology之后,storm创建spout/bolt实例big进行序列化。

982. 流是一个分布式并行创建和处理的无界的连续元组。

983. Storm数据传输利用的是zmq开源的消息传递框架。

984. Topology是由stream grouping链接起来的spout和bolt节点网络。

985. Tupe可以理解成键值对,即Fields和values。

986. Tuple的asked,faild都由spout发出并维护的。

987. 本地模式:storm用一个进程红的线程模拟所有spout/bolt。

988. Nimbus和supervisor之间的通信依赖Zookeeper完成。

989. 用户画像是一个实际用户的虚拟代表,如年龄,性别等。

990. 在机器学习中,对象是指含有一组特征的行变量。

991. 行变量的集合最容易构造的结构就是表。

992. Hadoop有三种令牌:

1. 委托令牌

2. 块访问令牌

3. 作业令牌

993. 对事物运动这种不确定性(随机性)的度量就是概率论。

994. 大数据4V:

1. Volume ——数据体量大

2. Variety ——数据类型繁多

3. Velocity ——处理速度快

4. Value   ——商业价值高

995. 移动互联网产生了和客户紧密拥绑的大数据。

996. 在互联网这个产业链中,谁掌握了用户,谁的天下。

997. 消费者的注意力和使用习惯去了哪里,钱就会流向哪里。

998. 体验的产生是一个艺术的过程。

999. 大数据的目标是定位。

1000. 建立一个学习型企业架构。

【大数据开发学习资料领取方式】:加入大数据技术学习交流群522189307,点击加入群聊,私信管理员即可免费领取

你可能感兴趣的:(大数据学习笔记500条【第二弹】,记得收藏!)