2014-04-10 3 views
3

Hadoop HDFS에서 수 기가 바이트의 텍스트 파일 디렉터리를 검색하려고합니다. 나는 이것을 할 수있다'hadoop hdfs -get'파일 압축

hadoop hdfs -get /path/to/directory/* . 

그러나 Hadoop 클러스터에 대한 나의 링크는 약 1MB/s이므로, 꽤 오래 걸린다. 대부분의 텍스트 파일과 마찬가지로이 파일들은 매우 잘 압축되므로 다운로드를 위해 파일을 압축하고 싶습니다. hadoop hdfs -get 명령이 전송 중에 자동으로 압축됩니까 (http 및 기타 많은 프로토콜이 수행 할 수있는 방식)?

그렇지 않은 경우 압축을 사용하여 파일을 가져 오는 가장 간단한 방법은 무엇입니까? 중요하다면 클러스터에서 CDH 4.5.0을 실행 중이며 클러스터에 대한 관리자 권한이 없습니다.

나는 this question을 찾았지만 HDFS에 보관하기 위해 파일을 압축하는 것에 대해 이야기하고 있으며 압축 된 파일을 생성, 가져 오지 않고 삭제하지 않고 전송중인 바이트를 압축하는 방법이있는 것 같습니다 . 전형적인 Hadoop 사용법을 이해 한 결과, 매우 큰 텍스트 파일을 가져오고 퍼팅하는 것이 전형적인 사용 사례가되어야하며, 텍스트 파일이 잘 압축된다는 것이 잘 알려져 있습니다.

나는 또한 이것이 의도적으로 Hadoop에 남아 있거나 향후 릴리스에서 추가 될 것으로 예상되는 문서화 된 누락 된 기능임을 나타내는 대답을 수락합니다.

답변

0

대역폭이 낮기 때문에 로컬 컴퓨터에서 파일을 가져 오기 전에 압축해야합니다. LZO 또는 클러스터에 구성된 다른 압축 코덱을 사용하여 MapReduce 작업을 실행해야합니다. 그런 식으로 압축 된 출력물을 다운로드 한 다음 다운로드 할 수 있습니다. 작업이 클러스터에서 실행될 것이므로 데이터 지역성을 적용하는 것이 더 빠를 것입니다.

정확히 위에서 언급 한 Hadoop HAR을 살펴보십시오. MR을 실행하고 압축 된 Hadoop Archive를 생성합니다. -getToLocal 명령을 사용하여 동일한 명령을 다운로드하고 WINRAR을 사용하여 열 수 있습니다. 자세한 내용은 Hadoop Archives

+0

일부 압축 량이'hadoop hdfs -get' 및'hadoop hdfs -put' 명령 또는 일부 동등한 명령에 내장되어 있지 않은 것에 놀랐습니다. 많은 사람들이 GB 또는 TB 범위의 파일을 업로드/다운로드해야합니까? –

+0

MapR 배포판에는 압축 기능이 내장되어 있지만 다른 배포판이나 코어 hadoop이 현재로서는이 기능을 가지고 있다고 생각하지 않습니다. MapR에 대한 자세한 내용 http://answers.mapr.com/questions/38/what-compression-algorithm-does-mapr-use – Sudarshan

1

대부분의 사람들이 이미 HDFS에서 파일 수준 압축을 사용하고 있으므로 전송 수준 압축을 적용해도 아무 것도 얻을 수 없다고 생각합니다.

또한 특정 유형의 압축을 사용하지 않도록 조심해야합니다. 맵 축소 작업에 대한 입력 파일을 쉽게 분할 할 수 없기 때문입니다. Gzip은 아니지만 "분할 가능"입력 파일이기 때문에 Snappy 나 LZO를 사용하고 싶습니다.

Hadoop에 패치를 제공하려면 선택 사항이라고 가정하고 -get (그리고 아마도)의 압축을 지원하는 변경 사항을 기꺼이 받아 들일 수 있습니다.

-get에 대한 구현은 CopyCommands.java에 있습니다. FSDataOutputStream에서 복사를 수행하는 데 IOUtils.copyBytes을 사용하는 것을 볼 수 있습니다. 이 시점에서 압축을 적용해야하지만 현재 완료되지 않았습니다.

그러나 MapR과 비슷한 HDFS에서 투명한 압축을 제공하는 것이 좋습니다.

+0

다른 사람이 이미 투명 압축을 제안한 것처럼 보입니다. https://issues.apache.org/jira/browse/HDFS-2115 티켓이 많은 활동을하고있는 것처럼 보이지 않습니다. –

+0

티켓에 대한 조치를 취하는 가장 쉬운 방법은 패치를 제공하는 것입니다. – b4hand

+0

투명한 압축을 추가 할 필요가 없습니다. 그러나 나는'--get'과'-put'을위한 옵션 압축을 추가 할 수 있어야합니다. 그래서 나는 그 https://issues.apache.org/jira/browse/HDFS-6323을위한 티켓을 추가했습니다. –

관련 문제