17-7-16周总结(ZooKeeper、MachineLearning)

  这是米有沃煲的一周(泪目)

1、ZooKeeper简介

  ZooKeeper,译名为“动物园管理员”,动物园管理员按照动物的各种习性加以分类和管理,这样我们才能更加放心安全的观赏动物。
  在企业级应用系统中,拆分系统是目前我们常用方法,同时也带来了系统的复杂性,各子系统不是孤立存在的,它们彼此之间需要协作和交互,即为我们常说的分布式系统。各个子系统就好比动物园里的动物,为了使各个子系统能正常为用户提供统一的服务,必须需要一种机制来进行协调,这就是ZooKeeper(动物园管理员)。ZooKeeper的目的就是提供一些工具集,用来建立安全处理局部故障的分布式应用。
  ZooKeeper本质上是一个分布式的小文件存储系统。原本是Apache Hadoop的一个组件,现在被拆分为一个hadoop的独立子项目,在Hbase(Hadoop的另外一个被拆分出来的子项目,用于分布式环境下的超大数据量的DBMS)中用到了ZooKeeper集群。 
  Hadoop,使用Zookeeper的事件处理确保整个集群只有一个NameNode,存储配置信息等.
  Hbase,使用Zookeeper的事件处理确保整个集群只有一个HMaster,察觉HRegionServer联机和宕(dàng)机,存储访问控制列表等。
  ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

2、ZooKeeper日志

  ZooKeeper服务器会产生三类日志:事务日志、快照日志和log4j日志。
  在ZooKeeper默认配置文件zoo.cfg(可以修改文件名)中,配置项dataDir用于配置ZooKeeper快照日志和事务日志的存储地址。配置项dataLogDir用于配置事务日志存储地址。在没有dataLogDir配置项的时候,ZooKeeper默认将事务日志文件和快照日志文件都存储在dataDir对应的目录下。

dataDir=/opt/zookeeper/data
dataLogDir=/opt/zookeeper/logs

  log4j用于记录ZooKeeper集群服务器运行日志,该日志的配置地址在conf/目录下的log4j.properties文件中,配置项“zookeeper.log.dir=.”,表示log4j日志文件在与执行程序(zkServer.sh)在同一目录下。当执行zkServer.sh 时,在该文件夹下会产生zookeeper.out日志文件。

  • 事务日志
      事务日志类似于mysql的binlog可以做恢复数据用,查看事务日志发现是二进制的。
    事务日志
      需要使用Zookeeper自带的LogFormatter工具类进行转换,首先将libs中的slf4j-api-1.6.1.jar文件复制到ZooKeeper根目录下,然后在ZooKeeper根目录下执行如下命令:
java -classpath .:lib/slf4j-api-1.6.1.jar:zookeeper-3.4.6.jar org.apache.zookeeper.server.LogFormatter log/version-2/log.b00000001

这里写图片描述
  然后,这是蛇?完全看不懂(小菜尴尬而不失礼貌的微笑)

  • 快照日志

      ZooKeeper的数据在内存中是以树形结构进行存储的,而快照就是每隔一段时间就会把整个DataTree的数据序列化后存储在磁盘中,这就是ZooKeeper的快照文件。
      快照日志snapshot同样需要使用Zookeeper自带的LogFormatter工具类查看:

java -classpath .:lib/slf4j-api-1.6.1.jar:zookeeper-3.4.6.jar org.apache.zookeeper.server.SnapshotFormatter data/version-2/snapshot.a00000006

快照日志
  可以看到一个snapshot文件是内存的全量快照,而不是像事务日志那样以增量的方式持久化到磁盘。
  而日志文件则是使用slf4g做为执行过程打印的日志,可以指定debug/info/warn/error的输出级别。

3、机器学习Ch7-8笔记

  • 规则化
      为了解决过度拟合,第一要尽量减少选取变量的数量:可以人工检查变量的条目,并以此决定哪些变量更为重要;模型选择算法,自动舍弃不需要的变量。第二是正则化:保留所有的特征变量,但是数量级或参数数值的大小θ(j)。
      如果我们的参数值,对应一个较小值的话,我们会得到形式更简单的假设。当这些参数越接近这个例子时,假设的结果越接近。
      我们想要在代价函数中加上惩罚项,使得参数θ足够的小。当我们最小化函数时,需要θ接近于零,这是惩罚其中较大的参数值的效果。
      参数值比较小时,我们会得到一个形式更简单的假设。参数值越小通常对应于越光滑的函数,也就是更简单的函数,因此不易发生过拟合的问题。在正则化里,就是把代价函数,这里就是线性回归的代价函数,修改代价函数使得缩小所有的参数值。增加额外的正则化项时,缩小了所有参数,没有缩小θ0,θ0是最大的。
    正则化
      λ称为正则化参数,控制在两个不同的目标中的一个平衡关系
    第一个目标就是我们想要训练,使假设更好地拟合训练数据,第二个目标是想要保持参数值较小。λ平衡拟合训练的目的和保持参数值较小的目的,从而保持假设的形式相对简单,来避免过度拟合。
  • 神经网络与深度学习
      神经网络起源为,人们想尝试设计出模仿大脑的算法。神经网络是在模仿大脑中的神经元或者神经网络时发明的,将神经元模拟成一个逻辑单元。
      x0为偏置作业/偏置神经元 x0总是等于1。一个有S型函数或者逻辑函数作为激励函数的人工神经元。在神经网络术语中,激励函数只是对类似非线性函数g(z)的另一个术语称呼。
    神经网络
      神经网路就是神经元组合在一起的集合。输入单元x1x2x3,三个神经元a1-3。网络中的第一层,称为输入层;最后一层为输出层,中间的第二层为隐藏层。
    公式
      上标(j)下标i表示 第j层的第i个神经元或单元,a上标(2)下标1表示 第2层的第1个神经元,即隐藏层的第一个激励。所谓激励(activation)是指由一个具体神经元读入计算并输出的值。
      神经网络被这些矩阵参数化,θ上标(j),一个波矩阵控制着从一层,比如说从第一层到第二层或者第二层到第三层的作用。s函数/s激励函数,参数矩阵控制了来自三个输入单元到三个隐藏单元的映射,因此θ1的维数3*4的矩阵。
      如果一个网络在第j层有sj个单元,在j+1层有sj+1个单元,那么矩阵θ(j)即控制第j层到第j+1层映射的矩阵的维度为s(j+1)*(sj + 1)。h(x)也可以写成a(3)1,等于后面。θ上标(2)是参数矩阵/权重矩阵,该矩阵控制从第二层即隐藏层的3个单元到第三层的一个单元即输出单元。
      神经网络定义了h,从输入x到输出y的映射。将这些假设的参数记为大写的θ。不同的θ对应不同的假设,所以我们有不同的函数,比如说从x到y的映射。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值