GooseFS 투명 가속 기능, CosN 액세스 COS 성능 향상

선언


원본 대상 저장 인터페이스 프로토콜은 HDFS 파일의 의미를 호환하지 않기 때문에 대상 저장 COS는 COSN 도구라는 표준적인 Hadoop 파일 시스템을 제공하여 Hadoop, Spark, Tez 등 빅데이터 계산 프레임워크의 통합 COS를 지원할 수 있다.
사용자는 Hadoop 파일 시스템 인터페이스를 구현한 CosN 플러그인을 사용하여 COS에 저장된 데이터를 읽고 쓸 수 있습니다.그러나 원생 대상 저장 서비스의 구조 설계 원인은List와 Rename의 성능이 좋지 않기 때문에 텐센트 클라우드 대상 저장 서비스는 GooseFS라는 분포식 캐시 방안을 내놓았다. 주로 캐시 가속이 필요한 데이터 호수 업무 장면을 포함하고 이미지 저장 COS 서비스를 바탕으로 하는 근거리 컴퓨팅 단말기 데이터 가속층을 제공한다.
투명 가속은 CosN의 COS 액세스 성능을 향상시키는 데 사용되는 GooseFS의 주요 기능입니다.GooseFS는 이미 CosN 도구를 사용하여COS에 접근한 사용자에게 클라이언트 경로 매핑 방식을 제공하여 사용자가 현재 Hive table 정의를 수정하지 않은 전제에서CosN scheme를 사용하여 GooseFS에 접근할 수 있도록 합니다. 이 기능은 사용자가 기존의 정의를 수정하지 않은 전제에서 GooseFS의 기능과 성능을 비교 테스트할 수 있도록 합니다.
클라우드 HDFS 사용자 (CHDFS) 도 OFS 클라이언트의 Scheme를 사용하여 GooseFS에 접근할 수 있도록 설정을 수정할 수 있습니다.
CosN Schema와 GooseFS Schema 사이의 경로는 어떻게 매핑됩니까?다음은 하나의 예로 설명한다.
가령 COS에 examplebucket-12500000000이 있다면 사용자는 디지털 창고의 데이터를 데이터/warehouse/의 경로에 저장하고 그 안에/folder/test가 있다.txt,/folder/test2.txt와 같은 파일입니다. 그러면 CosN의 접근 경로 형식에 따라 대응하는 경로는 다음과 같습니다.
cosn://examplebucket-1250000000/data/warehouse/
CosN에서 GooseFS로의 경로 매핑 관계는 다음과 같습니다.
cosn://examplebucket-1250000000/data/warehouse -> /warehouse/
cosn://examplebucket-1250000000/data/warehouse/folder/test.txt ->/warehouse/folder/test.txt
GooseFS에서 CosN으로의 경로 매핑 관계는 다음과 같습니다.
/warehouse ->cosn://examplebucket-1250000000/data/warehouse/
/warehouse/ -> cosn://examplebucket-1250000000/data/warehouse/
/warehouse/folder/test.txt -> cosn://examplebucket-1250000000/data/warehouse/folder/test.txt
참고 액세스한 CosN 경로가 GooseFS 경로로 변환되지 않으면 해당 Hadoop API 호출에서 예외가 발생합니다.

02 작업 예


투명 가속 프레젠테이션을 시작하겠습니다.이 예는 Hadoop 명령줄과 Hive에서 gfs://,cosn://,ofs://세 종류의 Schema를 사용하여 GooseFS에 접근하는 방법을 보여 준다.작업 프로세스는 다음과 같습니다.
1. 데이터 및 컴퓨팅 클러스터 준비
4
  • 저장통 문서 작성을 참고하여 테스트 용도의 저장통을 만듭니다
  • 4
  • 폴더 만들기 문서를 참고하여 저장통 루트 경로에 ml-100k라는 폴더를 만듭니다
  • 4
  • 그룹스에서 ml-100k 데이터 세트를 다운로드하고 파일 u.user를 4/ml-100k에 업로드합니다
  • 4
  • EMR 가이드 문서를 참조하여 EMR 클러스터를 구입하고 HIVE 구성 요소를 구성합니다
  • 2. 환경 구성
    i. share/hadoop/common/lib/디렉토리에 GooseFS의 클라이언트jar 패키지(goosefs-1.0.0-client.jar)를 넣습니다.
    cp goosefs-1.0.0-client.jar  hadoop/share/hadoop/common/lib/
    주의: 설정 변경과jar 패키지를 추가하려면 그룹의 모든 노드에 동기화해야 합니다.
    ii. Hadoop 구성 파일 etc/hadoop/core-site를 수정합니다.xml, GooseFS 구현 클래스 지정:
    
       fs.AbstractFileSystem.gfs.impl
       com.qcloud.cos.goosefs.hadoop.GooseFileSystem
    
    
       fs.gfs.impl
       com.qcloud.cos.goosefs.hadoop.FileSystem
    
    iii. 다음과 같은 Hadoop 명령을 실행하여 gfs://Scheme를 통해 GooseFS에 액세스할 수 있는지 확인합니다. 여기서 는 Master 노드의 IP입니다.
    hadoop fs -ls gfs://:9200/
    iv. GooseFS의 클라이언트jar 패키지를 Hive의 auxlib 디렉토리에 배치하여 Hive가 GooseFS 클라이언트 패키지에 로드되도록 합니다.
    cp goosefs-1.0.0-client.jar  hive/auxlib/
    v. 다음 명령을 실행하여 UFS Scheme이 CosN인 Namespace를 만들고 Namespace를 나열합니다.이 명령의 examplebucket-12500000000을 COS 저장소 통으로, SecretId와 SecretKey를 키 정보로 바꿀 수 있습니다.
    goosefs ns create ml-100k cosn://examplebucket-1250000000/ml-100k  --secret fs.cosn.userinfo.secretId=SecretId --secret fs.cosn.userinfo.secretKey=SecretKey--attribute fs.cosn.bucket.region=ap-guangzhou --attribute fs.cosn.credentials.provider=org.apache.hadoop.fs.auth.SimpleCredentialProvider
    goosefs ns ls
    vi. 명령을 실행하여 UFS Scheme을 OFS의 Namespace로 만들고 Namespace를 나열합니다.이 명령의 instance-id를 CHDFS 인스턴스로, 1250000000을 APPID로 바꿀 수 있습니다.
    goosefs ns create ofs-test  ofs://instance-id.chdfs.ap-guangzhou.myqcloud.com/ofs-test --attribute fs.ofs.userinfo.appid=1250000000
    goosefs ns ls
    3. GooseFS Schema 테이블 작성 및 쿼리 데이터
    다음과 같은 명령을 실행합니다.
    create database goosefs_test;
    use goosefs_test;
    CREATE TABLE u_user_gfs (
    userid INT,
    age INT,
    gender CHAR(1),
    occupation STRING,
    zipcode STRING)
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY '|'
    STORED AS TEXTFILE
    LOCATION 'gfs://:/ml-100k';
    select sum(age) from u_user_gfs;
    4. CosN Schema 테이블 작성 및 데이터 조회
    다음과 같은 명령을 실행합니다.
    CREATE TABLE u_user_cosn (
    userid INT,
    age INT,
    gender CHAR(1),
    occupation STRING,
    zipcode STRING)
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY '|'
    STORED AS TEXTFILE
    LOCATION 'cosn://examplebucket-1250000000/ml-100k';
    select sum(age) from u_user_cosn;
    5. GooseFS 호환성을 위해 CosN 수정
    hadoop/etc/hadoop/core-site를 수정합니다.xml:
    hadoop fs -ls  cosn://examplebucket-1250000000/ml-100k/
    Found 1 items
    -rw-rw-rw-   0 hadoop hadoop      22628 2021-07-02 15:27 
    cosn://examplebucket-1250000000/ml-100k/u.user
    hadoop fs -ls cosn://examplebucket-1250000000/unknow-path
    ls: Failed to convert ufs path cosn://examplebucket-1250000000/unknow-path to GooseFs path, check if namespace mounted
    Hadoop 명령을 실행하여 경로가 GooseFS의 경로로 변환되지 않을 경우 명령 출력에 오류 메시지가 포함됩니다.
    hadoop fs -ls  cosn://examplebucket-1250000000/ml-100k/
    Found 1 items
    -rw-rw-rw-   0 hadoop hadoop      22628 2021-07-02 15:27 cosn://examplebucket-1250000000/ml-100k/u.user
    hadoop fs -ls cosn://examplebucket-1250000000/unknow-path
    ls: Failed to convert ufs path cosn://examplebucket-1250000000/unknow-path to GooseFs path, check if namespace mounted 
    Hive 질의 문을 다시 실행하려면 다음과 같이 하십시오.
    select sum(age) from u_user_cosn;
    6. OFS Schema 테이블 작성 및 데이터 조회
    다음 명령을 사용하여 수행합니다.
    CREATE TABLE u_user_ofs (
    userid INT,
    age INT,
    gender CHAR(1),
    occupation STRING,
    zipcode STRING)
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY '|'
    STORED AS TEXTFILE
    LOCATION 'ofs://instance-id.chdfs.ap-guangzhou.myqcloud.com/ofs-test/';
    select sum(age) from u_user_ofs;
    7. OFS 호환성을 위해 OFS 수정
    hadoop/etc/hadoop/core-site를 수정합니다.xml:
    
       fs.AbstractFileSystem.ofs.impl
       com.qcloud.cos.goosefs.hadoop.CHDFSDelegateFS
    
    
       fs.ofs.impl
       com.qcloud.cos.goosefs.hadoop.CHDFSHadoopFileSystem
    
    Hadoop 명령을 실행하여 경로가 GooseFS의 경로로 변환되지 않으면 출력 결과에 오류 메시지가 포함됩니다.
    hadoop fs -ls  ofs://instance-id.chdfs.ap-guangzhou.myqcloud.com/ofs-test/
    Found 1 items
    -rw-r--r--   0 hadoop hadoop      22628 2021-07-15 15:56 ofs://instance-id.chdfs.ap-guangzhou.myqcloud.com/ofs-test/u.user
    hadoop fs -ls  ofs://instance-id.chdfs.ap-guangzhou.myqcloud.com/unknown-path
    ls: Failed to convert ufs path ofs://instance-id.chdfs.ap-guangzhou.myqcloud.com/unknown-path to GooseFs path, check if namespace mounted
    Hive 질의 문을 다시 실행하려면 다음과 같이 하십시오.
    select sum(age) from u_user_ofs;

    결어


    GooseFS는 원스톱 데이터 호수 캐시 가속 및 분포식 캐시 솔루션을 제공하여 캐시 가속이 필요한 데이터 업무 장면을 해결하고 대상을 바탕으로 COS 서비스를 저장하는 근거리 계산단 데이터 가속층을 제공하여CosN의 COS 접근 성능을 가속화하는 데 도움을 준다.

    좋은 웹페이지 즐겨찾기