Hive
作为基于Hadoop的一个数据仓库工具,可拿sql语句转换为MapReduce任务进展运作。
通过类SQL语句快速实现简单的MapReduce统计,不用付出专门的MapReduce应用

正文将介绍信息量,熵,交叉熵,相对熵的定义,以及它们与机具上算法中代价函数的定义的联系。转载请保留原文链接:http://www.cnblogs.com/llhthinker/p/7287029.html

切合数据仓库的统计分析。基本上Hadoop应用时,都产生Hive的影,下面说生基本Hadoop如何设置配备Hive

1. 信息量

信的量化计算:

统计 1

分解如下:

信息量的高低应该可以衡量事件闹的“惊讶程度”或非显眼:

倘若发生⼈告诉我们⼀个相当不可能的风波发⽣了,我们接受的消息一旦多于我们为告知某个大可能发⽣的事件发⽣时接受的信。如果我们解某件事情⼀定会发⽣,那么我们便无见面收下到消息。
也就是说,信息量应该连续依靠让波闹的概率分布p(x)
因此咱们怀念使物色⼀独基于概率p(x)计算信息量的函数h(x),它当负有如下性质:

  1. h(x) >= 0,因为信息量表示收获多少信息,不应当也负数。
  2. h(x, y) = h(x) +
    h(y),也就是说,对于片个不相干事件x和y,我们着眼到片只事件x,
    y同时发⽣时得的信应该等观察到事件各⾃发⽣时取的音信的同;
  3. h(x)凡有关p(x)底乏味递减函数,也就是说,事件x越轻出(概率p(x)越大),信息量h(x)越小。

以因为如果个别个未系事件是统计独⽴的,则有p(x, y) = p(x)p(y)。根据匪系事件概率可乘、信息量可加,很爱想到对数函数,看出h(x)⼀定与p(x)底对数有关。因此,有

统计 2满足上述特性。

同样、准备干活

2. 熵(信息熵)

于一个随机变量X而言,它的备或取值的信息量的期望就称为熵。熵的本质的别一样栽说:极端缺少平均编码长度(于离散变量

离散变量:

统计 3

连续变量:

统计 4

安装Hive之前,需要来环境暨相应软件的支持,首先用设置好Hadoop

3. 交叉熵

现有关于样本集的2只概率分布p和q,其中p为真实分布,q非真实分布。按照真实分布p来衡量识别一个样书的熵,即根据分布p给样本进行编码的绝差平均编码长度为:

统计 5

假设使用非真实分布q来深受样本进行编码,则是因分布q的信息量的期望(最好缺平均编码长度),由于用q来编码的样书来自分布p,所以希望和诚分布一致。所以冲分布q的顶短缺平均编码长度为:

统计 6

 上式CEH(p, q)即为交叉熵的概念。

(参考上篇博文),接下我们要装Mysql 数据库,为什么要装Mysql,

4. 相对熵

以由q得到的平均编码长度比由p得到的平分编码长度多出底bit数,即使用非真实分布q计算产生的样本的熵(交叉熵),与运真实分布p计算有底样书的熵的差值,称为相对熵,又称KL散度

KL(p, q) = CEH(p, q) – H(p)=

 统计 7

相对熵(KL散度)用于衡量两只概率分布p和q的反差。注意,KL(p,
q)意味着将分布p作为忠实分布,q作为非真正分布,因此KL(p, q) != KL(q, p)。

Hive有几乎种模式,内嵌模式是将将正数据保存在地面内嵌的 Derby
数据库中,这种措施缺点是内嵌的 Derby
数据库每次只能看一个数据文件,即无支持多会讲话总是。所以一般

5. 机上着之代价函数和接力熵

统计 8
是数据的真实概率分布,统计 9
是由数据计算得到的概率分布。机器上之目的就是希望统计 10尽可能地逼近甚至相当统计 11
,从而使相对熵接近最小价0.
由于实在的概率分布是定位的,相对熵公式的继半有(-H(p)) 就成了一个常数。那么相对熵达到至极小值的早晚,也意味着交叉熵达到了太小值。对统计 12
的优化就当效于求交叉熵的顶小价。另外,对交叉熵求最小值,也一律为要最好特别似然估计(maximum
likelihood estimation)。

特别的,在logistic regression中, 
p:真实样本分布,服从参数为p的0-1分布,即X∼B(1,p) 

p(x = 1) =
y

p(x = 0) = 1 – y
q:待估计的模型,服从参数为q的0-1遍布,即X∼B(1,q) 

p(x
= 1) = h(x)

p(x
= 0) = 1-h(x)

里h(x)呢logistic regression的而函数。
双面的交叉熵为: 
统计 13
针对负有训练样本取均值得: 

统计 14

此结果与经极端深似然估计方法要出的结果同样。使用最特别似然估计方法与博客 Logistic
Regression. 

 

Ref:

《模式识别与机具上》1.6节

http://blog.csdn.net/rtygbwwwerr/article/details/50778098

https://www.zhihu.com/question/41252833

咱下用首先数据保存于Mysql数据库中,可以在地面hive
server上还是远程某平等台server上,这里我们以地头创建Mysql数据库

Mysql一般在linux系统中默认自带,我们一味需要安装启动相应服务就好,当然为可以自己下充斥相应的安装包,这里我们就此centos自带的mysql版本,

起先服务

统计 15

mysql默认密码是空即没有密码,可协调修改

1、可以据此以下命令于root用户安装密码:
mysql_secure_installation

统计 16

2、根据提示先输入原来的密码,直接回车,输入2不行新密码,就设置成了。
只顾,在安装过程被,会唤醒删除是否anonymous用户,是否不肯root的长途访问,是否去测试用的数据库,是否再次使设置生效,根据实际状况择y
或 n即可,

统计 17

反了后重新开mysql: /etc/init.d/mysqld restart

次、下载安装Hive

1、  下载hive安装包

http://archive.apache.org/dist/hive/hive-2.1.1/
apache-hive-2.1.1-bin.tar.gz

上传到服务器,指定目录

统计 18

2、安装hive

tar –zxvf apache-hive-2.1.1-bin.tar.gz

统计 19

老三、设置配置起

1、更改环境变量

Vi  /etc/profile

统计 20

假若变量立即生效

source /etc/profile

2、  配置hive-env.sh

Hive目录下之/conf/hive-env.sh
文件,该文件默认为非设有,同样是拷贝它的模版来窜:

[hadoop@kencentos01 conf]$ cp hive-env.sh.template hive-env.sh

布置相关变量

export HADOOP_HOME=/home/hadoop/hadoop-2.7.3
export HIVE_HOME=/usr/hive/apache-hive-2.1.1-bin
export HIVE_CONF_DIR=/usr/hive/apache-hive-2.1.1-bin/conf 
export JAVA_HOME=/usr/java/jdk1.7.0_80

 3、修改 Hive 配置文件

Hive工程的安排文件呢
hive-site.xml,默认情况下,该公文并无存在,需要拷贝它的模版来兑现,此安排文件充分主要,若发生同一桩配置错误,则hive将运行无了

[hadoop@kencentos01 conf]$ cp hive-default.xml.template
hive-site.xml  

复制模版文件生成hive-site.xml

<property>
      <name>hive.metastore.warehouse.dir</name>
      <value>/user/hive/warehouse</value>
      <description>数据存储目录,默认位置在 HDFS 上面的 /user/hive/warehouse 路径下
</description>
</property>
..
<property>
       <name>hive.exec.scratchdir</name>
       <value>/tmp/hive</value>
       <description>数据临时文件目录,默认位置为 HDFS 上面的 /tmp/hive 路径下</description> </property>
   //配置 jdbc
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
   <value>jdbc:mysql://192.168.52.128:3306/hive?createDatabaseIfNotExist=true&amp;
characterEncoding=UTF-8&amp;useSSL=false</value>
    <description>
      //Jdbc 方式连接数据库
    </description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore 指定jdo驱动相关类</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
    <description>访问数据库的用户名</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>123456</value>
    <description>连接hive数据库对应用户的密码</description>
  </property>

检查下目录是否在(hadoop系统受),创建如下目录

[hadoop@kencentos01 bin]$ hdfs dfs -mkdir -p /user/hive/warehouse
[hadoop@kencentos01 bin]$ hdfs dfs -mkdir /tmp/hive
[hadoop@kencentos01 bin]$ hdfs dfs -chmod 777 /user/hive/warehouse
[hadoop@kencentos01 bin]$ hdfs dfs -chmod 777 /tmp/hive

4、配置jdbc驱动包

下载mysql的jdbc驱动包mysql-connector-java-5.1.6-bin.jar

(mysql官网或http://download.csdn.net/download/happy516/1753230)

放入hive的lib目录下$HIVE_HOME/lib

5、所有${system:Java.io.tmpdir} 改也绝对路径

  如/opt/hive/apache-hive-2.1.1.bin/iotmp (可协调定义)

四、启动Hive服务

1、启动hive 服务

[hadoop@kencentos01 bin]$ nohup hive -service metastore &

[hadoop@kencentos01 bin]$ nohup hive --service hiveserver2 &

 2、运行hive

  可能会见赶上如下问题

  Error:

 Caused by: MetaException(message:Version information not found in
metastore…

统计 21

将hive-site.xml中hive.metastore.schema.verification的值true 改为 false

戒架构版本不兼容时的 Metastore 操作。考虑将此设置也“True”,以减掉
Metastore 操作间生架构损坏的可能性

Error:

MetaException(message:Hive metastore database is not initialized. Please
use schematool…

统计 22

转移也机关创建

Datanucleus.schema.autoCreateAll设置为true

Error:

Relative path in absolute URI:
${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D …

这个荒唐说明java.io.tmpdir需要配备,即将hive-site.xml中兼有${system:java.io.tmpdir}都改吧绝对目录,如/opt/hive/apache-hive-2.1.1-bin/iotmp

启动hive

$hive

统计 23

本机装了几乎令虚机,性能比差 :)  

统计 24