2016-10-26 3 views
-1

내 문제를 해결하기위한 기술과 방법을 결정하는 것이 혼란 스럽습니다.빠른 성능을 위해 Hadoop 도구를 선택하는 방법

나는 RDBMS에서 생성되는 약 4TB의 데이터를 담고있는 5000 개의 테스트 파일을 가지고 있으며, 5k 개의 텍스트 파일을 준비하는 데 거의 4 일의 시간이 걸린다.이 시간 문제를 해결하기 위해 나는 5k 텍스트 파일 데이터를 Hadoop 시스템에 저장하여 데이터를 더 빠르게 읽을 수 있고 텍스트 파일을 더 빠른 속도로 생성 할 수 있습니다.

나는 데이터가 증가 될 것이지만 처음에는이 활동을해야하지만 매월 5k 개의 텍스트 파일을 생성해야합니다.

보통 전체 테이블 스캔을 수행해야하며 5KB 파일을 준비하려면 일부 조인을 수행해야 할 수도 있습니다.

이 경우 어떤 도구를 고려해야하는지 알려주세요. MapReduce 및 HBase 또는 HIVE 테이블 또는 다른 것.

+0

전체 테이블 스캔은 HIVE를 사용하십시오. –

답변

0

텍스트 파일을 Hadoop으로 이동 한 다음 텍스트 파일을 생성하려는 경우 수행하려는 작업이 조금 명확하지 않은 것입니까? 나는 몇 가지 사항을 고려하여 대답하려고 노력할 것이다.

사용자가 취하는 접근 방식과 사용하는 기술은 데이터를 어떻게 사용하고 싶은지와 같은 몇 가지 요소에 따라 다릅니다. 모든 시스템을 다른 시스템으로 내보내시겠습니까? 분석을합니까? 데이터의 작은 부분에서 랜덤 액세스 읽기를 수행합니까? 또는 법적인 요구 사항과 같이 보관할 수 있습니까? 데이터를 가져 오기위한

일부 옵션 :

  1. 입력 데이터는 이미 텍스트 파일입니다 그리고 그들은 (예를 들어 분리) 잘 정의 된 구조입니다 당신이 직접 HDFS로 이동할 수 있으며, 하이브 외부 테이블을 작성하는 경우 필요할 때 읽을 수 있습니다. 이것은 다른 방법보다 구현이 빠르다.
  2. 입력이 텍스트 파일이지만 하이브 QL을 사용하여 구조를 처리하기 어려운 경우 Spark을 사용하여 데이터를 가져 와서 다시 포맷하고 내보내는 것을 고려하십시오. 그런 다음 하이브에서 if를 사용하려면 HDFS에 데이터를 구분 된 파일로 저장하거나 HBase에로드 할 수 있습니다.
  3. 입력 데이터가 RDMS에서 왔고 RDMS에 액세스 할 수있는 경우 : Hive 또는 Spark를 사용할 수 있습니다. - Spark JDBC를 살펴보십시오. Hive는 더 간단하지만 데이터를 변환하려는 경우 유연성이 떨어집니다. Hive에서는 조인을 사용하여 간단한 차원 정보를 추가 할 수 있습니다. 스파크 코드는 데이터를 쉽게 결합 할 수없는 경우 높은 유연성을 제공하지만 작성하기가 더 복잡합니다. 스파크는 또한 실시간 스트리밍을 처리 할 수있어 소스가 스트리밍 데이터를 생성 할 때 유용합니다.
  4. 하이브에서 수행하기 어려운 데이터에 대해 복잡한 변환을 수행하거나 데이터를 여러 번 전달해야하는 경우 (느린 경우), 메모리 내 처리를 수행하는 스파크 사용을 고려하십시오. 스파크는 데이터를 신속하게 조작 할 수 있습니다. 데이터를 포맷하는 & 형식을 추가하면 빠르고 유연하게 수행 할 수 있습니다. 단점은 &을 개발해야합니다 (Java, Python 또는 Scala 등). 변환이 완료되면 하이브에서 액세스하려는 경우 데이터를 HDFS에 구분 된 파일로 쓸 수 있습니다. 또는 데이터에 빠르게 무작위로 액세스하려면 HBase에로드하십시오.
  5. RDQ에서 추출하려는 경우 Sqoop이 옵션이며 추출 논리는 매우 간단합니다 (예 : Updated_date 열을 기반으로 추출).Sqoop을 그것보다 더 복잡 매우 사용자 정의, 그래서 아무것도하지 않고 당신은 데이터를 사용하기위한 다른 옵션을

일부 옵션을 고려해야합니다

  1. 하이브 당신에게보다 쉽게 ​​할 수있는 SQL과 같은 언어를 제공을 팀 또는 최종 사용자가 SQL에 익숙한 경우 사용하십시오. Hive는 조인, 요약 등을 수행 할 수 있습니다. 이들을 Oozie와 함께 매일/매주/매월 실행하도록 예약 할 수 있습니다. Hive는 각 노드의 디스크에서 실행되는 "일괄 처리"와 같은 클러스터에서 MapReduce 작업을 실행합니다. 빠른 대화 형 쿼리에는 적합하지 않지만 한 번에 많은 데이터를 처리하는 데 적합합니다. 배치와 같은 처리를 원할 수도있는 것처럼 들립니다. 또한 애널리스트 사용자에게 하이브에 대한 액세스 권한을 부여하여 정의한 테이블에 대한 분석을 수행 할 수 있습니다. 마지막으로 ODBC를 사용하여 Excel에서 하이브에 연결할 수 있습니다.이 하이브는 사용 사례에 따라 매우 유용 할 수 있습니다.
  2. HBase는 대용량 데이터에 대한 빠른 임의 액세스를위한 좋은 옵션입니다. 예 : 수백만 명의 고객으로부터 하나의 고객 정보를 찾습니다. HBase가 Hive만큼 효율적으로 전체 테이블 스캔을 수행하지 않으므로 HBase 테이블에서 분석을하는 것은 바람직하지 않습니다.
  3. 하이브리드 옵션 : 가끔 일괄 쿼리를 수행하고 HBase를 통해 무작위 액세스하려는 경우 하이브 외부 테이블을 만들고 HBase에 데이터를 저장할 수 있습니다. Hase 쿼리는 HBase 대신 구분 된 파일을 사용하는 경우보다 일반적으로 HBase 검색을 사용하기 때문에 속도가 느립니다.
  4. 모든 레코드에 조회 정보를 추가하지 않고 임의 액세스를 원하기 때문에 Hive를 사용하는 것이 바람직하지 않은 경우 Storm DRPC를 사용하여 데이터를 추가 할 때 즉석에서 차원을 추가하는 것을 고려하십시오 요청됩니다. 이는 모든 레코드에 대해 모든 차원 정보를 HDFS에 저장하는 것이 덜 효율적인 데이터에 대한 임의 액세스에 적합합니다. Hive를 사용하는 것보다 더 복잡하고 유연합니다.
+0

귀하의 세부 설명 주셔서 감사합니다. 나는 제대로 구분 된 5K 텍스트 파일을 구조화했습니다. 이러한 파일의 크기는 4TB.Hbase 대량 업로드로 이동하기로 결정했습니다 .HBase는 나중에 업데이 트를해야하고 또한 일괄 대량 삭제해야하기 때문입니다 . 그리고 HBase와 HIVE를 통합하여 조인과 전체 테이블 스캔을 수행 할 수 있습니다. – SUDARSHAN

+0

파일을 구분하면 HDFS로 파일을 옮기고 하이브 외부보기를 만들 수 있습니다. HBase 대량로드보다 빠르고 간단하며 스캔 및 결합을 더 빠르고 간단하게 수행 할 수 있습니다. – bjorno

+0

나는 데이터를 구분했다. 그러나 나는 또한 .HIVE가 incemental 데이터를 처리 할 수있게 될 증가하는 데이터를 가지고있다. – SUDARSHAN