第二周 深圳模具- 满堂彩 ,linux , 虚拟机

2021-04-20 21:14:23


深圳模具-满堂彩



***电脑中要先有如下内容:

image.png

image.png

点击安装虚拟机

image.png


image.png

image.png

输入16位许可证码 ,按 《输入》

image.png

结束虚拟机安装 , 接下来安装 Centos 操作系统 。


在屏幕上点击虚拟机图标 :image.png  出现下面的封面


image.png


点击创建新的虚拟机

image.png

按 自定义  , 然后 下一步。

image.png


image.png

image.png

选择  Centos 64 bit

image.png


image.png


image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

按  完成  以后


image.png


image.png

点击后, 出现安装 centos 的界面 , 完成后出现图形界面


image.png


选择 Otehr    ,   输入  root       hadoop  进入系统


image.png


至此 , 前面的安装完成 , 可以按  终端  进入  # 状态



1、准备linux环境

          1.1 、修改主机名 # vi /etc/sysconfig/network

                                        HOSTNAME=hsmaster


           1.2 、修改ip

                          第一种方法:通过图形界面方式进行修改 ,

                          第二种方法通过命令进行修改:

                                    # vi /etc/sysconfig/network-scripts/ifcfg-eth0

                                        BOOPROTO="static"

                                        IPADDR=192.168.1.119

                                        GATEWAY=192.168.1.1


           1.3 、修改主机名和ip的映射关系

                                 # vi /etc/hosts

                                    192.168.1.119 hsmaster

                                    192.168.1.120 hsslave1

                                    192.168.1.121 hsslave2

                                    《如果有 10台电脑 , 也是这样配置》


          1.4 、关闭防火墙

                               # service iptables status

image.png

                               # service iptables stop

image.png

                               # chkconfig iptables off

image.png


         1.5 、重启linux

                               # reboot


2 、安装jdk

         2.1 、上传jdk文件       to      /bigdata/tools

         2.2 、解压jdk  tar -zxvf jdk-7u79-linux-i586.tar.gz

         2.3 、配置java环境变量

                               # vi /etc/profile

                                       export JAVA_HOME=/bigdata/tools/jdk1.7.0_79

                                       export PATH=$PATH:$JAVA_HOME/bin


3 、配置ssh免登录

         1.1 、 ssh-keygen -t rsa 一路回车生成密钥

         1.2 、 id_rsa.pub 追加授权Key  cat ~/.ssh/id_rst.pub >> ~/.ssh/authorized_keys

         1.3、 修改权限

                   chmod   666

         1.4 、 将公共密钥复制到其它节点

                   还是需要修改权限

         1.5 、 重启ssh服务


         1.6 、 检查配置文件

         1.7 、 验证ssh免登录是否成功

                   # cat /etc/ssh/

image.png

4、搭建hadoop集群

         4.1 、上传文件

                  窗口下可以拖拽进入虚拟机

         4.2 、 解压hadoop文件

                  tar

         4.3 、 配置hadoop-env.sh文件

                  修改绝对路径

         4.4、 配置core-site.xml文件


         4.5、 配置hdfs-site.xml文件


         4.6 、 配置mapred-site.xml文件

         4.7 、 配置yarn-site.xml文件


         4.8 、 配置环境变量


         4.9 、 将文件复制到其它节点上


        4.10 、 进行格式操作

                    # hdfs namenode -format

         4.11 、 启动hadoop sbin/  ./start-all.sh


         4.12 、 验证集群是否启动成功

                        # jps

                               NameNode

                               DataNode

                               NodeManager

                               ResourceManager

                               SecondaryNameNode

           4.13 、 登录界面进行查看:

                       HDFS管理界面:                                       http://192.168.1.119:50070

                       MR管理界面:                                          htpp://192.168.1.119:8088




----------------------------------------------------------------下面是第三周

深圳模具-正式学习使用 hadoop 大数据集群


一 、HDFS相关命令:

       1 、查看HDFS下目录结构及文件   hdfs dfs -ls -R /

       2 、创建文件目录/tmp    hdfs dfs -mkdir /tmp

       3 、删除/tmp目录   hdfs dfs -rm -r /tmp

       4 、复制当前目录下a.txts到HDFS文件系统   hdfs dfs -put a.txt /inputFile

       5 、列出/tmp目录   hdfs dfs -ls /tmp

       6、查看/inputFile/a.txt文件内容   hdfs dfs -cat /inputFile/a.txt

       7 、查看HDFS状态   hdfs dfsadmin -report


        用这个命令可以快速定位出哪些节点down掉了 ,HDFS的容量以及使用了多少 ,

        以及每个节点的硬盘使用情况。当然NameNode有个http页面也可以查询,

        但是这个命令的输出更适合我们的脚本监控dfs的使用状况 。


        下面是关于 YARN 的操作:

         yarn.nodemanager.aux-service

                spark_shuffle

                mapreduce_shuffle    要引入对应的架包

                yarn.nodemanager.aux-services.mapreduce_shuffle.class

                                采用 FIFO的方式 , 这个方式并不好 , 好的方式是 公平调度-Fair .

                org.apache.hadoop.mapred.ShuffleHandler


                yarn.nodemanager.aux-services.spark_shuffle.class

                org.apache.spark.network.yarn.YarnShuffleServic

                FairScheduler.xml

                yarn.scheduler.fair.user-as-default-queue false true

                yarn.scheduler.fair.preemption false true

               yarn.resourcemanager.scheduler

               org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler

               spark.shuffle.service.port 7337



第四周

              Hbase 。

              Hbase  -> Google bigtable 开源实现   ---2008年---->  apache hadoop 下面的项目

                               采用的公司 :    Facebook           Intel       yahoo     baidu     alibaba      tencent   360  等等   nosql 数据库

image.png


image.png


                SQL (Structured Query Language) 数据库,指关系型数据库 。

                                                                       主要代表:SQL Server,Oracle ,MySQL(开源) ,PostgreSQL(开源)。

          NoSQL(Not Only SQL)泛指非关系型数据库。

                                                                       主要代表:MongoDB ,Redis ,CouchDB 。 supersech      hbase , kylin ,  chiohouse   phesto


               关系型数据库的特点:    面向行的 ,    Nosql 是面向列的 。

               高并发状态下:      分库分表    读写分离   带来数据一致性问题 ,海量数据实现出来很复杂 ,后期迁移也很复杂 。

               高可用 ,可靠性 ,可伸缩性的措施: 主备 、 主从 、 多主。   本身的可扩展性很差 。   增加节点或者宕机要做迁移 。

               Hbase 首先是一个大表 。


1.关系型数据库理论 - ACID

            ACID,是指数据库管理系统(DBMS)在写入或更新资料的过程中 ,为保证事务(transaction)是正确可靠的 ,

                      所必须具备的四个特性:原子性(atomicity ,或称不可分割性) 、一致性(consistency) 、

                      隔离性(isolation ,又称独立性)、持久性(durability) 。

                      A – Atomicity – 原子性

                                             一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成 ,不会结束在中间某个环节 。

                                             事务在执行过程中发生错误 ,会被回滚(Rollback)到事务开始前的状态 ,就像这个事务从来没有被执行过一样 。

                      C – Consistency – 一致性

                                             在事务开始之前和事务结束以后 ,数据库的完整性没有被破坏 。这表示写入的资料必须完全符合所有的预设规则 ,

                                              这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作 。

                      I – Isolation – 隔离性

                                             数据库允许多个并发事务同时对其数据进行读写和修改的能力 ,隔离性可以防止多个事务并发执行时

                                             由于交叉执行而导致数据的不一致。事务隔离分为不同级别 ,包括读未提交(Read uncommitted) 、

                                             读提交(read committed) 、可重复读(repeatable read)和串行化(Serializable) 。

                      D – Durability – 持久性

                                             事务处理结束后 ,对数据的修改就是永久的 ,即便系统故障也不会丢失。

       关系型数据库严格遵循ACID理论 。

       但当数据库要开始满足横向扩展 、高可用、模式自由等需求时,需要对ACID理论进行取舍 ,不能严格遵循ACID 。

       以CAP理论和BASE理论为基础的NoSQL数据库开始出现。

2.分布式系统理论

2.1 分布式系统介绍

分布式系统的核心理念是让多台服务器协同工作 ,完成单台服务器无法处理的任务,尤其是高并发或者大数据量的任务 。分布式是NoSQL数据库的必要条件。

分布式系统由独立的服务器通过网络松散耦合组成的 。每个服务器都是一台独立的PC机 ,服务器之间通过内部网络连接 ,内部网络速度一般比较快 。因为分布式集群里的服务器是通过内部网络松散耦合,各节点之间的通讯有一定的网络开销 ,因此分布式系统在设计上尽可能减少节点间通讯 。此外 ,因为网络传输瓶颈 ,单个节点的性能高低对分布式系统整体性能影响不大 。比如 ,对分布式应用来说 ,采用不同编程语言开发带来的单个应用服务的性能差异 ,跟网络开销比起来都可以忽略不计。

因此 ,分布式系统每个节点一般不采用高性能的服务器 ,而是使用性能相对一般的普通PC服务器 。提升分布式系统的整体性能是通过横向扩展(增加更多的服务器) ,而不是纵向扩展(提升每个节点的服务器性能)实现 。

分布式系统最大的特点是可扩展性 ,它能够适应需求变化而扩展 。企业级应用需求经常随时间而不断变化 ,这也对企业级应用平台提出了很高的要求 。企业级应用平台必须要能适应需求的变化 ,即具有可扩展性 。比如移动互联网2C应用 ,随着互联网企业的业务规模不断增大,业务变得越来越复杂 ,并发用户请求越来越多 ,要处理的数据也越来越多 ,这个时候企业级应用平台必须能够适应这些变化 ,支持高并发访问和海量数据处理 。分布式系统有良好的可扩展性 ,可以通过增加服务器数量来增强分布式系统整体的处理能力,以应对企业的业务增长带来的计算需求增加 。

2.2 分布式存储的问题 – CAP理论

如果我们期待实现一套严格满足ACID的分布式事务,很可能出现的情况就是系统的可用性和严格一致性发生冲突 。在可用性和一致性之间永远无法存在一个两全其美的方案。由于NoSQL的基本需求就是支持分布式存储 ,严格一致性与可用性需要互相取舍 ,由此延伸出了CAP理论来定义分布式存储遇到的问题 。

CAP理论告诉我们:一个分布式系统不可能同时满足一致性(C:Consistency) 、可用性(A:Availability) 、分区容错性(P:Partitiontolerance)这三个基本需求 ,并且最多只能满足其中的两项 。

对于一个分布式系统来说 ,分区容错是基本需求,否则不能称之为分布式系统 。因此架构师需要在C和A之间寻求平衡 。


HBase 的物理存储

HBase 表中的所有行都是按照行键的字典序排列的 。

因为一张表中包含的行的数量非常多 ,有时候会高达几亿行 ,所以需要分布存储到多台服务器上 。

因此 ,当一张表的行太多的时候,HBase 就会根据行键的值对表中的行进行分区 ,每个行区间构成一个“分区(Region)” ,

包含了位于某个值域区间内的所有数据 ,如图 1 所示 。

HBase的Region存储模式图

图 1  HBase的Region存储模式图




Region 是按大小分割的 ,每个表一开始只有二个 Region ,随着数据不断插入到表中 ,Region 不断增大 ,

当增大到一个阈值的时候 ,Region 就会等分为两个新的 Region 。

当表中的行不断增多时 ,就会有越来越多的 Region ,如图 2 所示 。



 HBase的Region分裂示意
图 2  HBase的Region分裂示意


Region 是 HBase 中数据分发和负载均衡的最小单元 ,默认大小是 100MB 到 200MB。

不同的 Region 可以分布在不同的 Region Server 上 ,但一个 Region 不会拆分到多个 Region Server 上。

每个 Region Server 负责管理一个 Region 集合 。

如图 3 所示。



HBase的Region分布模式
图 3  HBase的Region分布模式



Region 是 HBase 在 Region Server 上数据分发的最小单元 ,但并不是存储的最小单元 。

事实上 ,每个 Region 由一个或者多个 Store 组成 ,每个 Store 保存一个列族的数据 。

每个 Store 又由一个 memStore 和 0 至多个 Store File 组成 ,如图 4 所示。

Store File 以 HFile 格式保存在 HDFS 上 。


HBase的Region存储模式
图 4  HBase的Region存储模式

HBase 的逻辑架构

在分布式的生产环境中 ,HBase 需要运行在 HDFS 之上 ,以 HDFS 作为其基础的存储设施 。

HBase 的上层是访问数据的 Java  API 层 ,供应用访问存储在 HBase 中的数据 。

HBase 的集群主要由 Master 、Region Server 和 Zookeeper 组成,

具体模块如图 5 所示。

HBase的系统架构

图 5  HBase的系统架构



1)Master

Master 主要负责表和 Region 的管理工作 。

表的管理工作主要是负责完成增加表 、删除表 、修改表和查询表等操作 。

Region 的管理工作更复杂一些 ,Master 需要负责分配 Region 给 Region Server ,协调多个 Region Server ,检测各个 Region Server 的状态 ,并平衡 Region Server 之间的负载 。

当 Region 分裂或合并之后 ,Master 负责重新调整 Region 的布局。如果某个 Region Server 发生故障 ,Master 需要负责把故障 Region Server 上的 Region 迁移到其他 Region Server 上 。

HBase 允许多个 Master 结点共存 ,但是这需要 Zookeeper 进行协调 。当多个 Master 结点共存时 ,只有一个 Master 是提供服务的 ,其他的 Master 结点处于待命的状态 。

当正在工作的 Master 结点宕机时 ,其他的 Master 则会接管 HBase 的集群 。



2)RegionServer

HBase 有许多个 Region Server ,每个 Region Server 又包含多个 Region 。Region Server 是 HBase 最核心的模块,负责维护 Master 分配给它的 Region 集合 ,并处理对这些 Region 的读写操作 。

Client 直接与 Region Server 连接 ,并经过通信获取 HBase 中的数据 。

HBase 釆用 HDFS 作为底层存储文件系统 ,Region Server 需要向 HDFS 写入数据,并利用 HDFS 提供可靠稳定的数据存储。

Region Server 并不需要提供数据复制和维护数据副本的功能。


3)Zookeeper

Zookeeper 的作用对 HBase 很重要 。


首先 ,Zookeeper 是 HBase Master 的高可用性(High Available ,HA)解决方案 。

也就是说 ,Zookeeper 保证了至少有一个 HBase Master 处于运行状态 。

Zookeeper 同时负责 Region 和 Region Server 的注册 。

HBase 集群的 Master 是整个集群的管理者,它必须知道每个 Region Server 的状态 。

HBase 就是使用 Zookeeper 来管理 Region Server 状态的 。

每个 Region Server 都向 Zookeeper 注册 ,由 Zookeeper 实时监控每个 Region Server 的状态 ,并通知给 Master 。


这样 ,Master 就可以通过 Zookeeper 随时感知各个 Region Server 的工作状态 。


需要搭建 ZooKepper 集群 , 采取奇数作为基础 , 要不断选取出唯一的领导者 。


然后在搭建 Hbase 集群 。



image.png

image.png



Hlog = Mysql 中的 bingLog

image.png



Hbase 逻辑架构

image.png


image.png



安装 Hbase


1 、下载软件从   hbase.apache.com

2 、上传到 \bigdata\tools

3 、tar -zxvf hbase-1.2.3tar.gz

4 、cd /bigdata/tools/hbase1.2.3/config

5 、vi hbase-env.sh

      export ...


6 、vi  hbase-site.xml



image.png

image.png

image.png


image.png

我们上课说的:    start-hbase.sh

              查看:     jsp                         或者 http://192.168.1.119:16030


              安装一个插件 Phoenix , 就可以用 mysql 数据库的命令看了    , 等于是一个 shell .

              API可以在 Java后端做软件查看 。

第四周 , 卢老师笔记--------------------------------------------------------------------------------------------------


HBase 是一个高可靠性 、高性能 、面向列 、可伸缩的分布式存储系统。

利用PC搭建大规模的结构化存储集群 。


HBase -> Google Bigtable开源实现 。GFS <- HDFS 2006 powerset jim

2008  Apache Hadoop


Facebook

Intel

Yahoo

baidu

alibaba

tencent

360


回顾一下传统关系型数据库

1 、有事务的保障 ACID 原子性、一治性 、隔离性 、持久性

2 、丰富的数据类型和sql操作

3 、严格的数据类型 ,及行式存储


关系型数据库在高并发、大数据应对方式:

高并发:

措施:分库分表 、读写分离

带来数据一致性问题

海量数据:

措施:分库分表

实现复杂 ,后期迁移复杂

路由自定义

高可用 、可靠 、可伸缩、

措施:主备、主从 、多主

本身扩展性差 ,增加节点宕机需要做数据迁移


HBase特点:

大表:一个表有上亿行,上百万列

面向列:面向列族的存储 ,列族独立检索

稀疏:对于空(null)的列 ,不占用空间

。 。 。



分布式数据库hbase特点:

基于列式高效存储

强一致数据访问

高可靠

高性能

可伸缩 ,自由切分 、迁移

Schema free


RowKey

:与nosql数据库一样,row key是用来检索记录的主键 。

而且可以访问hbase table中行 ,只有三方法:

1 、通过单个row key进行访问

2 、通过row key的range进行访问

3 、全表扫描

row key行键 ,64kb ,实际应用长度一般10~100ytes,在hbase内部 ,row key保存为字节数组 。存储时 ,数据按row key的字典顺序排序存储 。



Columns family

列族:

hbase表中的每个列 ,都归属于某个列族。

列族是表的schema的一部分,而列不是 ,必须在使用表之前进行定义 。

列名都以列族作为前缀 。

courses:history, courses:math都属于courses这个列族 。



Time Stamp

时间戳:

hbase中通过row和columns确定的为一个存储单元:cell

每个cell都保存着同一份数据的多个版本 。版本通过时间戳来做索引。时间戳的类型是64位整型 。

时间戳也可以由hbase系统进行赋值,可以精确到毫秒 ,当然也可以由客户显示赋值 。

每个cell中 ,不同版本的数据按时间倒序排序 ,最新的数据排在最前面 。为了避免数据存在过多版本造成的管理负担 ,hbase提供两种回收方式 ,一是保存数据最后的n个版本 ,二保存最近一段时间内版本(比如最近7天) ,用户可以针对每个列族进行设置 。




Cell

由row key + column ,version唯一确定单元 ,cell中的数据是没有类型的 ,全是字节码形式存储 。

Cell的内容是不可分割的字节数组 。

无类型 、字节码 。



物理存储

在hbase table中所有的行都按row key的字典序排列 。

table在行的方向上分割为多个hregion


Region按大小分割的 ,每个表一开始只有一个region ,随着数据不断插入表,region不断增大,当增大到一定阀值时候 ,Hregion就会分成两个新hregion



HRegion是Hbase中分布式存储和负载均衡的最小单元,最小单元就表示不同的Hregion可以分布在不同的hregion server上 ,但一个hregion是不会折分到多个server


Store:

Hregion虽然是分布式存储的最小单元 ,但并不是存储的最小元 ,在下层还有store ,而store是以hfile的格式保存在hdfs上 。





HFile:

1 、Data Block

保存表中的数据 ,这部分可以被压缩 。


2 、Meta Block

保存用户自定义的kv对 ,可以被压缩


3 、Data Block Index

Data Block索引 ,每条索引的key是被索引的block的第一条记录的key


4、Meta Block Index

Meta Block索引.


5 、Trailer

是定长的 ,保存每一段的偏移量 。在读取一个hfile时 ,会首先读取Trailer,Trailer保存了每个段的起始位置,然后 ,DataBlockIndex会被读取到内存中,这样 ,当检索某个key时,不需要扫描整个HFile ,而只需要从内存中找到key所在的blok ,通过一次磁盘io,可以将整个block读取到内存中 ,再找到需要的key。DataBlockInde采用LRu机制淘汰 。

HFile的DataBlock ,MetaBlock通常采用压缩方式进行存储,压缩后可以减少磁盘io ,相应的cpu的开支也会减少 。


6 、File Info

是HFile的元信息 ,不被压缩 ,用记可以在这一段添加自己的元信息 。


目前HFile的压缩支持两种方式:GZip 、Lzo


Hlog:

Hlog类似于mysql 中的binlog ,用来做灾难恢复 ,hlog记录了所有数据的变更 ,一但数据修改,都可以在log里面进行恢复 。


注意:每个Region Server维护一个Hlog ,而不是每个Region一个


这样不同的Region的日志会混合在一起,这样做的目的 ,是不断追加单个文件相对于同时写多个文件而言,可以减少磁盘寻址次数。所以可以提高对table的写的性能 。


Hlog 文件就是一个hadoop squence file ,squence file的key是hlogkey的对象 ,hlogkey记录了写入数据的归属信息 。除了table和region名字之外 ,同时还包括sequence number和time stamp ,time stamp是写入时间 ,sequence number和的起始值为0 ,或者是最近一次存储文件 系统的sequence number。



Client:

访问hbase接口 ,维护着region位置的缓存信息 。


Zookeeper:

保证任何时候,集群中只有一个master

存储所有Region的寻址入口 。

实时监控Region Server的状态 ,将上下线信息通知master

存储hbase的schema,包括有哪些table ,每个table有哪些column family


Master

为Region Server分配region

负载region server的负载均衡

发现失效的region server并重新分析其上的region

GFS上的垃圾文件回收

处理schema更新请求 。




Region Server

维护master分配给它的region,处理io请求

负责切分过大的region ,可以看到client访问hbase上数据的过程并不需要master参与 。



HBase安装部署与配置:

单机、集群

1 、上传hbase安装包

2 、解压hbase文件  tar -zxvf hbase-1.2.3.tar.gz

3 、cd /bigdata/tools/hbase1.2.3/conf

4、修改hbase-env.sh

export JAVA_HOME=/bigdata/tools/jdk1.7

export HBASE_CLASSPATH=/bigdata/tools/hbase1.2.3/conf

export HBASE_MANAGERS_ZK=true


5 、修改hbase-site.xml

hbase.rootdir

hdfs://192.168.1.119:9000/hbase



hbase.cluster.distributed

true




6 、配置region servers文件及hbase环境变量

regionservers文件增加集群节点ip

192.168.1.119

192.168.1.120

192.168.1.121


配置hbase环境变量

export HBASE_HOME=/bigdata/tools/hbase1.2.3/

export PATH=$PATH:/bigdata/tools/hbase1.2.3/bin


source /etc/profile



7 、启动hbase

start-hbase.sh


8 、查看hbase进程

jsp

DataNode

SecondaryNamenode

NameNode

ResourceManger

NodeManager

HRegionServer

Hmaster

JobTracker

TaskTracker

QuorumpeerMain


9 、通过http页面进行查看

http://192.168.1.119:16030


hbase shell基本用法:

1 、建立一个表scores ,有两个列族,grad和courese

create 'scores','grade','courese'


2、查看hbase中的所有的表:

list


3 、查看表结构:

describe 'scores'


4 、按设计的表结构插入值:

put 'scores','tom','grade','5'

put 'scores','tom','courese:math','97'

put 'scores','Jim','courese:art','87'

put 'scores','Jim','grade','4'


5、根据键值查询数据

get 'scores','Jim'

get 'scores','Jim','grade'


6 、查看表中所有数据

scan 'scores'


7 、删除指定数据

delete 'scores','Jim','grage'



8、修改表结构

disable 'scores'

alter 'scores', NAME=>'info'

enable 'scores'


9 、统计行数

count 't1'


10 、删除表

disable 'scores'

drop 'scores'



API


1 、初始化配置

publice class HBaseTest{

private static Configuration conf = null;

Cinfuguration HBASE_CONF = new Configuration()

HBASE_CONF.set('hbase.master','192.168.1.119:60000')

HBASE_CONF.set('hbase.zookeeper.quorum','hsslave1,hsslave2,hsslave3')

.set('hbase.zookeeper.property.clientport','2181')

conf = HBaseconfiguration.create(HBASE_CONF)


}


2 、创建一张表



public static void createTable(String tableName,String[] familys)throws Exception{

HBaseAdmin admin = new HBaseAdmin(conf)

HTableDescripor tableDes = new HTbaleDescriptor(tableName)

tableDes.addFamily(new HColumnDescriptor(familys[i]))

admin.createTable(tableDes)

}



3 、插入一条数据


4 、删除一行数据


5 、查询一条记录


6 、查询所有数据


3 、删除一张表


-------------------------------------------------------------------------------------------




首页
产品
新闻
联系