Hadoop-01

25257 단어
1. 디스크 어레이(RAID)는'독립된 디스크로 구성된 이중화 능력을 가진 어레이'라는 뜻을 가진다.
	RAID0       、             。           RAID ,                。 RAID0                    ,             ,                  。         I/O   ,          。            ,RAID0        RAID        。**    ,    n        RAID0 ,               n  **,               ,            。
	RAID1     ,                       ,           50% 。 RAID1       ,         ,            。 RAID1           ,          ,             ,        。RAID1   RAID0     ,                        ,        、    、    。 RAID1          ,      。 RAID1                            ,           
	RAID5           RAID   ,      RAID4   ,                    ,            。         ,                     。  , RAID5     RAID4                   。  , RAID5          。           ,             ,   RAID4        ,                。RAID5               ,                     ,         ,                                。    RAID     ,     , RAID5            。RAID5       、               ,       RAID0   RAID1      ,                  。 RAID5                  ,                    。

표준 RAID 레벨은 각각 장점과 단점이 있습니다.자연히 우리는 여러 개의 RAID 등급을 조합하여 장점을 서로 보완하고 서로의 부족함을 보완하여 성능, 데이터 안전성 등 지표에서 더욱 높은 RAID 시스템을 달성하고자 한다. 실제적으로 비교적 광범위하게 응용된 것은 RAID01과 RAID10 두 등급뿐이다.일부 문헌에서는 이 두 가지 레이드 등급을 동일시하는데 본고는 다르다고 본다.RAID01은 스트라이핑을 한 다음 미러링을 만듭니다. (먼저 분리하면 두 곳의 백업이 같은 것이지 같은 곳에서 두 번 백업하는 것이 아닙니다.)본질은 물리 디스크에 대한 거울 구현이다.RAID10은 미러링된 후 스트라이핑된 것으로 가상 디스크에 미러링된 것입니다.동일한 구성에서 일반적으로 RAID01은 RAID10보다 내결함성이 우수합니다.RAID01은 RAID0과 RAID1의 장점을 겸비하고 있으며 두 개의 디스크로 거울을 만든 다음에 거울 내부를 스트라이핑한다.RAID01의 데이터는 두 개의 디스크 어레이에 동시에 기록되며, 어레이 중 하나가 손상된 경우에도 데이터 보안을 유지하면서 성능을 향상시킬 수 있습니다.RAID01 및 RAID10 내부에는 RAID1 모드가 포함되어 있으므로 전체 디스크 활용도는 50%에 불과합니다.(RAID100은 일반적으로 큰 데이터베이스에 가장 좋은 선택입니다.)
2. Zookeeper는 분포식 조정 서비스의 소스 프레임워크이다.주로 분포식 집단에서 응용 시스템의 일치성을 해결하는 데 사용되고 분포식 작은 파일(1M 미만)의 저장이라고 볼 수 있다. 주로 집단 중의 일부 공공 데이터(원 데이터-묘사 데이터의 데이터-묘사 노드)를 관리하여 집단의 관리를 실현한다. 예를 들어 같은 데이터를 동시에 조작하여 더러운 읽기를 초래하는 문제를 어떻게 피해야 하는가.리더와 follower가 있는데 리더는 추가, 삭제, 수정이 가능합니다. follower는 검색만 할 수 있고 다른 요청을 만나면 리더에게 전송할 수 있습니다. 때로는 관찰자 Observe도 있습니다. 읽을 수 있고 읽을 수 있는 투표 선택 리더의 권리도 없습니다. 주로 읽을 수 있는 동시 방문량을 높이는 데 사용됩니다.다음과 같은 6가지 역할이 있습니다.
1、     
2、      
3、       :           
4、       (PubSub  ,  Publish/Subscribe    ,  “  /  ”  )      :             ,                   。              ,          ,              。
5、    
6、     

3. zookeeper의 특성(편차가 무슨 뜻인지 아직 해결되지 않았다)
1)       :   server            , client         server,          ,        ;
2)    :              ,            。
3)    :           :                  a     b    ,     Server     a       b     ;           b     a           , a      b   (   )。
4)        :          (        ),    ,       ;
5)    : Zookeeper                           ,          。

4.zookeeper의 데이터 모델
ZooKeeper의 데이터 모델은 구조적으로 표준 파일 시스템과 매우 비슷하고 하나의 차원의 명칭 공간을 가진다. 모두 트리 차원 구조를 사용하고 ZooKeeper 트리의 각 노드를 -Znode라고 부른다.파일 시스템의 디렉토리 트리와 마찬가지로 ZooKeeper 트리의 각 노드는 하위 노드를 가질 수 있습니다.그러나 다른 점도 있다.
1.Znode            。           、   、ACL、        ,                  ,      Znode。   Znode   、 、 、    (        )。
2.Znode       ,                ,               。  ,            ACL(      ),            ,                    。
3.Znode         。ZooKeeper          ,                     ,    ,         ,               、    、      。                    ,    KB     。ZooKeeper                      Znode       1M,            。
4.Znode      ,  Unix      。        ,              。    ,        ,               ,          。 ZooKeeper ,   Unicode     ,       。   "/zookeeper"        ,        。
     zkServer.sh           :  ZOO_USER_CFG="-Djute.maxbuffer=10240000"   znode    ,     

5. Zookeeper의 Znode는 두 가지가 있는데 임시 노드와 영구 노드이다. 노드 유형은 창설할 때 확정되고 후기에는 바꿀 수 없다.임시 노드: 이 노드의 생명주기는 세션을 만드는 것에 의존한다. 세션이 끝나면 임시 노드는 자동으로 삭제되고 수동으로 삭제할 수 있다. 임시 노드는 하위 노드가 영구 노드가 존재할 수 없다. 이 유형의 노드는 생명주기가 세션에 의존하지 않고 수동으로 삭제할 수 있다.Znode는 작성할 때 지정하면 자동으로 증가하는 일련 번호가 추가되는 서열화(순서) 기능도 있습니다.일련 번호는 이 노드의 부모 노드에 대해 유일하며 각 하위 노드가 생성된 선후 순서를 기록합니다.그것의 형식은 '% 10d' (10자리 숫자, 숫자가 없는 숫자는 0 으로 보충합니다. 예를 들어 '000000001')
      :(PERSISTENT)      
[zk: localhost:2181(CONNECTED) 3] create /hello world
Created /hello 
      :(EPHEMERAL)    
[zk: localhost:2181(CONNECTED) 5] create -e /abc 123
Created /abc
         :(PERSISTENT_SEQUENTIAL)    、   
[zk: localhost:2181(CONNECTED) 6] create -s /zhangsan boy
Created /zhangsan0000000004
         :(EPHEMERAL_SEQUENTIAL)    、   
zk: localhost:2181(CONNECTED) 11] create -e -s /lisi boy
Created /lisi0000000006

6. 분포식: 하나의 업무나 임무를 분리하여 각각 배치한다.집단: 같은 시스템이나 업무를 여러 번 배치했는데 집단에서 각 노드가 같다(일반적으로 이 두 가지는 공통적으로 존재한다. 요리사가 밥을 짓는 것을 생각해 보자)
7、업로드 도구 설치 rz:yum-y install lrzsz
rz    
sz    

8、zookeeper의 bin에서 zookeeper(zkServer.sh start./zkCli.sh) 자료에 zookeeper의 플러그인을 시작합니다. zookeeper가 열린 후 셸에 임의로 입력하면 조작 가능한 명령 도움말이 나오거나 -help------zookeeper의 조작은 인터넷 조회가 가능합니다.
create -s /path data	      
create -e /path data	      
create /path data	      
ls               
get                   
set path data     
delete path     
rmr path     

9.zookeeper의watcher 메커니즘
   watcher   :
		1)      zookeeper   warcher(    )
		2)                   ,  watcher
		3)              ,        
watcher   : 
		1)      :           
		2)        :                  
		3) event     ,       
		4)       


10. 자바 조작
package com.itheima.zookeeper;

import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.framework.recipes.cache.ChildData;
import org.apache.curator.framework.recipes.cache.TreeCache;
import org.apache.curator.framework.recipes.cache.TreeCacheEvent;
import org.apache.curator.framework.recipes.cache.TreeCacheListener;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.apache.zookeeper.CreateMode;
import org.junit.Test;

public class ZookeeperTest {
     

    //     
    @Test
    public void createNode() throws Exception {
     

        //1.    curator      : CuratorFramework
        ExponentialBackoffRetry retry = new ExponentialBackoffRetry(1000,3);
        CuratorFramework client = CuratorFrameworkFactory.newClient("192.168.72.141:2181,192.168.72.142:2181,192.168.72.143:2181", retry);

        //2.    CuratorFramework     
        client.start();

        //3.      :           ,          ip    zookeeper 
        client.create().creatingParentsIfNeeded().withMode(CreateMode.PERSISTENT).forPath("/test02");


        //4.     

        client.close();
    }

    // 2)    
    @Test
    public void  updateDataNode() throws Exception {
     
        //1.    curator      : CuratorFramework
        ExponentialBackoffRetry retry = new ExponentialBackoffRetry(1000,3);
        CuratorFramework client = CuratorFrameworkFactory.newClient("192.168.72.141:2181,192.168.72.142:2181,192.168.72.143:2181", retry);

        //2.    CuratorFramework     
        client.start();

        //3.      :
        client.setData().forPath("/test02","abcd".getBytes());


        //4.     
        client.close();
    }


    //3)    
    @Test
    public void  delDataNode() throws Exception {
     
        //1.    curator      : CuratorFramework
        ExponentialBackoffRetry retry = new ExponentialBackoffRetry(1000,3);
        CuratorFramework client = CuratorFrameworkFactory.newClient("192.168.72.141:2181,192.168.72.142:2181,192.168.72.143:2181", retry);

        //2.    CuratorFramework     
        client.start();

        //3.      :
        client.delete().forPath("/test02");


        //4.     
        client.close();
    }

    // 4) watcher    
    @Test
    public void  watcherDemo() throws Exception {
     
        //1.    curator      : CuratorFramework
        ExponentialBackoffRetry retry = new ExponentialBackoffRetry(1000,3);
        CuratorFramework client = CuratorFrameworkFactory.newClient("192.168.72.141:2181,192.168.72.142:2181,192.168.72.143:2181", retry);

        //2.    CuratorFramework     
        client.start();

        //3)     (watcher) : TreeCache
        TreeCache treeCache = new TreeCache(client,"/test02");

        treeCache.getListenable().addListener(new TreeCacheListener() {
       //      :            
            //     
            //    1:    CuratorFramework         2:  TreeCacheEvent     
            @Override
            public void childEvent(CuratorFramework client, TreeCacheEvent treeCacheEvent) throws Exception {
     
                ChildData data = treeCacheEvent.getData();

                TreeCacheEvent.Type type = treeCacheEvent.getType();
                switch (type) {
     
                    case NODE_ADDED:
                        //       
                        System.out.println("      ..."+new String(data.getData()));
                        break;
                    case NODE_UPDATED:
                        System.out.println("      ..."+new String(data.getData()));
                        break;
                    case NODE_REMOVED:
                        System.out.println("      ...."+new String(data.getData()));
                        break;
                        default:
                            System.out.println("......22222" + type);
                        break;
                }

            }
        });

        // 4)        
        treeCache.start();

        //System.in.read();//       
        Thread.sleep(1000000000);
    }
}


좋은 웹페이지 즐겨찾기