Hadoop-01
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);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.