2012-05-02 2 views
2

나는 캐스 산드라에서 파일을 스트리밍하고 싶습니다. 왜냐하면 우리는 이미 전체 hadoop 분산 파일 시스템을 설정하기보다는 그것을 사용하고 있기 때문입니다. atyanax 또는 hector에있는 비동기식 puts가 완료되면 콜백을 제공하므로 1000 개의 항목을 쓰는 동안 1ms 네트워크 지연을 피할 수 있습니다 (몇 행과 열을 나누어서 스트리밍 함). 병렬로 몇 대의 서버에 연결하면 스트리밍을 마쳤을 때 모든 응답/콜백이 다시 발생합니다. Hector 나 astyanax가 이것을 지원합니까?cassandra 또는 hector에 astyanax를 사용하여 비동기 적으로 넣을 수있는 방법은 무엇입니까?

astyanax가 쿼리 콜백을 지원하는 것처럼 보이므로 기본 키를 사용하여 astyanax로 파일을 다시 스트리밍 할 수 있다고 생각합니까?

덕분에, 딘

답변

1

카산드라 실제로 중고품 API를 통해 스트리밍 지원하지 않습니다. 또한 파일을 여러 행과 열에 걸쳐 데이터를 분산시키는 단일 변형 배치로 분해하면 매우 위험 할 수 있습니다. 캐산드라에 힙을 날려 버릴 수도 있고, 1MB 소켓 쓰기 버퍼 제한에 부딪 힐 수도 있습니다. 특정 오류 상황에서 실제로 슬리 프 연결이 무한정 정지 될 수 있습니다 (이 문제는 최신 버전의 cassandra에서 수정 될 수 있습니다) .

Astyanax (https://github.com/Netflix/astyanax/wiki/Chunked-Object-Store)의 새 청크 객체 저장소 제조법은 Netflix에서의 경험을 토대로 커다란 객체를 Cassandra에 저장하고 간단한 API를 제공합니다 그것은 당신을위한 모든 청킹과 병렬 처리를 처리합니다. 그것은 여전히 ​​(파일 크기와 청크 크기에 따라) cassandra를 1000 번이나 호출 할 수있을뿐만 아니라 모든 재 시도와 병렬 처리를 처리 할 수 ​​있습니다. 파일을 읽는 경우에도 마찬가지입니다. API는 청크를 읽고 OutputStream으로 순서대로 다시 어셈블합니다.

+0

astyanax는 절약 API를 거치지 않지만 요즘은 저조한 지원을하고 있습니다. (여전히 요청/응답이지만 응답은 희망 채널과는 별도로 nio 채널의 스레드 풀을 통해 다시 올 수 있습니다.) 또한, 나는 astyanax chunking을보고 X 스레드를 구성해야하는 것으로 혼란 스럽습니다. 왜냐하면 비동기라면 읽고 쓸 수 있고 독서하지 않고 쓸 수 있고 단 하나의 스레드 만 필요하기 때문입니다. 나는 내 작업에서 astyanax를 통한 http 업로드를 통해 스트리밍하므로 업로드 작업 당 둘 이상의 스레드를 사용해야하는 이유는 무엇입니까? –