Docker简介

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的LInux机器上,也可以实现使用沙盒机制,相互之间不会有任何接口。

使用docker安装Hadoop

之前曾经分享过如何使用docker安装oracle,今天我们要使用docker安装Hadoop。
一般的在进行环境搭建的时候,我们都会有以下两种方案:

1.采用多个主机
2.使用虚拟机
但是这两种方法都很具有局限性。

第一种方法,我们往往找不到那么多的主机,想要让Hadoop有意义,至少需要3个主机。
第二种方法,对于宿主机的要求非常的高,如果没有很高的配置的话,费尽千辛万苦,到最后也基本上跑不动。
而且步骤繁琐,往往还没有安装到Hadoop,就耗费完了精力。

详细步骤 项目地址

  • pull docker image
sudo docker pull kiwenlau/hadoop:1.0
  • clone GitHub repository
git clone https://github.com/kiwenlau/hadoop-cluster-docker
  • create Hadoop network
sudo docker network create --driver=bridge hadoop
  • start container
cd hadoop-cluster-docker
sudo ./start-container.sh

output :

start hadoop-master container...
start hadoop-slave1 container...
start hadoop-slave2 container...
root@hadoop-master:~# 
  • start hadoop
./start-hadoop.sh
  • run wordcount
./run-wordcount.sh

output

input file1.txt:
Hello Hadoop

input file2.txt:
Hello Docker

wordcount output:
Docker    1
Hadoop    1
Hello    2

给已存在的元素绑定事件时可以直接写:

$(".class a").click(function(){   })

但是对于动态生成并append()到页面上的元素来说,就不能直接用上面的方法来绑定事件了。

在Jquery 1.7之前我们可以通过live()和delegate()来解决:

1.live()方法

语法:$(selector).live(event,data,function)

$(".class a").live("click",function(){   })

但是在Jquery1.7版本中就不推荐使用live()方法了,在1.9版本中live()方法被移除了,用on()方法来代替。

官方原文档说法如下:The live() method was deprecated in jQuery version 1.7, and removed in version >1.9. Use the on() method instead.

2.delegate()方法

语法:$(selector).delegate(childSelector,event,data,function)

$(".class").delegate("a","click",function(){  })

delegate()方法在jQuery 3.0版本中就不推荐用了,只是还没有被删除而已,推荐用on()方法来代替。

官方原文档说法如下:The delegate() method was deprecated in version 3.0. Use the on() method >instead.

现在推荐的方法是on():

3.on()方法

语法:$(selector).on(event,childSelector,data,function,map)

$(".class").on("click","a",function(){ })

继jQuery1.7之后,on()方法替代了bind(), live() 和 delegate() 方法。on()方法可以给当前元素和未来元素绑定事件。

childSelector项是可选的,如果没有childSelector项的话,只能给被选元素(已存在的元素)绑定事件,不能给未来元素(后续动态生成的元素)绑定事件;

用off()方法解除事件的绑定,如果绑定的事件只执行一次,则用one()方法。

现在知道了怎么给未来元素绑定事件,那么原理是什么呢?

给未来元素绑定事件的原理其实是事件委托,把事件绑定在未来元素的父元素上,然后通过父元素找到子元素触发该事件。

1.连上网
2.把约束文件引入到eclipse中。

1.找到相应的dtd(核心还是映射),复制一句话—》dtd网址
2.window属性,搜xml catalog
3.右侧add key type:URI Key:复制的那个东西。Location: 本地dtd的路径
4.重启eclipse

hibernate核心api的使用

Configuration

//第一步 加载核心配置文件,到src中找到核心配置文件
        Configuration cfg = new Configuration();
        cfg.configure();

到src下去找名称为hibernate.cfg.xml,创建对象。把配置文件放到对象里。(加载核心配置文件)

Sessionfactory

使用Configuration对象来创建session。
在创建sessionfactory过程中做的事情

  • 根据核心的配置文件数据库和映射关系进行创建表格
  //读取核心配置文件的内容,创建sesionfactory,会创建表
        SessionFactory sessionFactory = cfg.buildSessionFactory();
  <!--hibernate可以帮助我们创建表格,但是需要配置之后-->
        <property name="hibernate.hbm2ddl.auto">update</property>
        <!--update,如果有的话,更新,没有,创建-->

创建sessionfactory十分消耗资源,因此我们会创建工具类。建议一个项目创建一个sessionfactory对象。

具体实现

写一个工具类,写一个静态代码块。(只会执行一次,在类加载的时候)

public class HibernateUtils {

    static Configuration configuration = null;
    static SessionFactory sessionFactory = null;
    static {
       //加载核心配置文件
        configuration = new Configuration();
        configuration.configure();
        sessionFactory = configuration.buildSessionFactory();
   }

    //提供方法返回sessionFactory
    public static SessionFactory getSessionFactory(){
        return sessionFactory;
    }
//保证一个项目只有一个sessionfactory
}

Session

  • session类似于jdbc中的connection。
  • 调用session中不同的方法来进行crud操作

添加 sava
修改 update
删除 delete
根据id查询 get

  • session对象是单线程的。 只能自己用,但是别人不能共享。
  • session不可以共用(360是一个进程,但是有不同的 操作 -线程 )

transition

事物的对象


        //开启事物
        Transaction transaction = session.beginTransaction();

两个方法

tx.commit();//提交
tx.rollback();//回滚

事物的概念
(1)事物的四个特性
原子性,一致性,隔离性,持久性。
一致性:操作前,后数据量不变。

映射配置文件

  • 名称和位置没有固定的
  • 映射的配置文件中,标签name都是实体类属性的

1.class 标签中name属性值为实体类全路径
2.id和property中为实体类的属性
3.id标签和property标签中property column可以不写,不写的话默认就是name
4.property 标签type属性,设置表字段的类型

核心配置文件

  1. 配置的位置c35d2d552637c5c94df5aafd6702fe95.png

2.配置三部分的要求
(1) 数据库部分必须
(2) hibernate部分可选
(3)映射文件必须

3.核心配置文件位置确定
/src下
名称固定
hibernate.cfg.xml