2012-07-13 28 views
12

Tôi viết bản đồ công việc. Đầu vào là một bảng trong hbase.Lỗi bản đồ hóa cơ sở Hbase

Khi công việc chạy, có lỗi:

org.apache.hadoop.hbase.client.ScannerTimeoutException: 88557ms trôi qua kể từ gọi cuối cùng, thời gian chờ hiện đang thiết lập để 60000 tại org.apache.hadoop.hbase .client.HTable $ ClientScanner.next (HTable.java:1196) tại org.apache.hadoop.hbase.mapreduce.TableRecordReaderImpl.nextKeyValue (TableRecordReaderImpl.java:133) tại org.apache.hadoop.hbase.mapreduce.TableRecordReader.nextKeyValue (TableRecordReader.java:142) tại org.apache.hadoop.mapred.MapTask $ NewTrackingRecordReader.nextKeyValue (MapTask.java:032) tại org.apache.hadoop.mapreduce.MapContext.nextKeyValue (MapContext.java:67) tại org. apache.hadoop.mapreduce.Mapper.run (Mapper.java:143) tại org.apache.hadoop.mapred.MapTask.ru nNewMapper (MapTask.java:764) tại org.apache.hadoop.mapred.MapTask.run (MapTask.java:370) tại org.apache.hadoop.mapred.Child $ 4.run (Child.java:255) tại java. security.AccessController.doPrivileged (Native Method) tại javax.security.auth.Subject.doAs (Subject.java:396) tại org.apache.hadoop.security.UserGroupInformation.doAs (UserGroupInformation.java:1083) tại org.apache. hadoop.mapred.Child.main (Child.java:249) Gây ra bởi: org.apache.hadoop.hbase.UnknownScannerException: org.apache.hadoop.hbase.UnknownScannerException: Tên: 1502530095384129314 tại org.apache.hadoop.hbase.regionserver .HRegionServer.next (HRegionServer.java:1837) tại sun.reflect.GeneratedMethodAccessor19.invoke (Unknown Source) tại sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) tại java.lang.reflect.Method.invoke (Phương thức .java: 597) tại org.apache.hadoop.hbase.ipc.HBaseRPC $ Server.call (HBaseRPC.java WEBC70) tại org.apache.hadoop.hbase.ipc.HBaseServer $ Handler.run (HBaseServer.java:1039) tại sun.reflect.NativeCons tructorAccessorImpl.newInstance0 (Native Method) tại sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:39) tại sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:27) tại java.lang.reflect.Constructor.newInstance (Constructor. java: 513) tại org.apache.hadoop.hbase.RemoteExceptionHandler.decodeRemoteException (RemoteExceptionHandler.java:96) tại org.apache.hadoop.hbase.client.ScannerCallable.call (ScannerCallable.java:83) tại org.apache.hadoop .hbase.client.ScannerCallable.call (ScannerCallable.java:38) tại org.apache.hadoop.hbase.client.HConnectionManager $ HConnectionImplementation.getRegionServerWithRetries (HConnectionManager.java:1226) tại org.apache.hadoop.hbase.client.HTable $ ClientScanner.next (HTable.java:1187) ... 12 thêm

Bạn có thể trợ giúp tôi sửa nó.

Trả lời

9

Đã hết thời gian chờ của máy quét. Để tránh time-out Exception Tăng time-out bằng cách thiết lập thuộc tính trong HBase-site.xml mà sẽ có mặt tại hbase-> conf

<property> 
    <name>hbase.client.scanner.timeout.period</name> 
    <value>900000</value> <!-- 900 000, 15 minutes --> 
    </property> 
    <property> 
    <name>hbase.rpc.timeout</name> 
    <value>900000</value> <!-- 15 minutes --> 
    </property> 
9

Khi chính thức HBase bang cuốn sách:

Bạn có thể cần phải tìm một điểm ngọt giữa số RPC thấp và bộ nhớ được sử dụng trên máy khách và máy chủ. Việc đặt bộ nhớ đệm cao hơn sẽ cải thiện hiệu suất quét hầu hết thời gian, nhưng đặt quá cao cũng có thể có tác dụng phụ: mỗi cuộc gọi đến() sẽ mất nhiều thời gian hơn khi dữ liệu được tìm nạp và cần được vận chuyển khách hàng, và một khi bạn vượt quá heap tối đa, quá trình khách hàng có sẵn nó có thể chấm dứt với một OutOfMemoryException. Khi thời gian thực hiện để chuyển các hàng cho khách hàng, hoặc để xử lý dữ liệu trên máy khách, vượt quá ngưỡng cho thuê máy quét được cấu hình, bạn sẽ kết thúc nhận được lỗi hết hạn thuê, dưới dạng ScannerTimeoutException.

Vì vậy, tốt hơn không nên tránh ngoại lệ theo cấu hình ở trên, nhưng để đặt bộ nhớ đệm ở phía Map thấp hơn, cho phép người lập bản đồ xử lý tải được yêu cầu trong khoảng thời gian được chỉ định trước.

+1

https://books.google.fr/books?id=nUhiQxUXVpMC&pg=PA128&lpg=PA128#v=onepage&q&f=false – Fabien

+0

đoạn là từ ** HBase hướng dẫn dứt khoát ** , Ấn bản đầu tiên năm 2011 trang 128. – botchniaque

2

Bạn có thể sử dụng phương thức quét setCaching(int noOfRows) đối tượng quét để giảm số lượng hàng được tìm nạp bằng máy quét cùng một lúc.

Scan scan=new Scan(); 
scan.setCaching(400);//here 400 is just an example value 

giá trị bộ nhớ đệm lớn hơn có thể gây ra ScannerTimeoutException như chương trình của bạn có thể mất nhiều thời gian hơn trong tiêu thụ/chế biến hàng lấy hơn giá trị thời gian chờ.

Nhưng nó có thể làm chậm công việc của bạn cũng như máy quét đang thực hiện nhiều yêu cầu tìm nạp hơn cho máy chủ, vì vậy bạn nên tinh chỉnh các giá trị cachingtimeout theo nhu cầu của chương trình.

0

Settting tài sản trong HBase-site.xml sau làm việc cho tôi

<property> 
     <name>hbase.client.scanner.timeout.period</name> 
     <value>900000</value> 
    </property> 

này được ném nếu thời gian giữa RPC cuộc gọi từ khách hàng để RegionServer vượt quá thời gian chờ quét. ví dụ.

if (RPC_call_time > Scanner_timeout){ 

throw ScannerTimeoutException 

} 

lần my blogspot for details

Các vấn đề liên quan