2012-03-15 27 views
9

Tôi đã cài đặt Hadoop và Hive trên 3 cụm. Thông thường tôi có thể sử dụng hive và Hadoop nhưng khi tôi đăng nhập với người dùng khác, tôi không thể sử dụng Hive. Lỗi này là:Cách sử dụng tổ ong với người dùng khác

hive> hiển thị bảng;

FAILED: Lỗi trong siêu dữ liệu: javax.jdo.JDOFatalDataStoreException: Không thể nhận kết nối, lỗi nhóm Không thể tạo đối tượng được xác thực, nguyên nhân: Người dùng chỉ đọc hoặc người dùng trong cơ sở dữ liệu chỉ đọc không được phép tắt chế độ chỉ đọc trên kết nối.

NestedThrowables:

org.apache.commons.dbcp.SQLNestedException: Không thể có được một kết nối, lỗi hồ bơi có thể không tạo ra một đối tượng xác nhận, nguyên nhân: Người dùng chỉ đọc hoặc một người dùng trong một cơ sở dữ liệu chỉ đọc không được phép tắt chế độ chỉ đọc trên kết nối.

FAILED: Thực hiện lỗi, mã trở lại 1 từ org.apache.hadoop.hive.ql.exec.DDLTask

tôi đăng nhập với người sử dụng khác, và thiết lập quyền chmod 777 cho thư mục mà tôi cài đặt hadoop và hive, tôi có thể sử dụng hive. Nhưng khi tôi đăng nhập vào người dùng khác, đó là lỗi. Tôi có nghĩa là, tôi phải thiết lập sự cho phép khi tôi đăng nhập vào sử dụng hive trên hadoop. Làm thế nào có thể sử dụng hive trên hadoop với một lần cấu hình cho phép ????

Trả lời

6

Tôi không thể cho bạn biết TẠI SAO điều này làm việc nhưng nó đã sửa nó cho tôi.

cd ../hive/metatstore_db/ 
rm *.lck 

Tôi gặp sự cố với tài khoản hadoop và tài khoản gốc có khóa riêng.

+0

Tôi đã thử cả hai điều đã đề cập ở trên nhưng vẫn gặp lỗi tương tự .. Bất kỳ ý tưởng nào nếu các bạn vui lòng cho tôi biết –

+0

Tìm kiếm máy chủ của bạn để tìm bất kỳ tệp .lck nào và thử xem chúng có ở một nơi không dường như có liên quan? Giống như tôi đã nói tôi đã thực hiện rất nhiều nghiên cứu nhưng chưa bao giờ tìm ra lý do tại sao điều này lại hiệu quả. –

+0

Tôi gặp vấn đề tương tự. Thay đổi quyền và xóa tệp khóa đã giúp bạn. – Sumod

13

Tôi đã gặp sự cố tương tự và giải quyết vấn đề theo cách sau. Vấn đề là vì hai lý do có thể.

  • Hoặc, người dùng mà bạn đăng nhập như (làm 'whoami') không có ghi vào thư mục cơ sở dữ liệu derby metastore sử dụng bởi Hive. Vì vậy, hãy truy cập/var/lib/hive/metastore/metastore_db (đây là mặc định trong hầu hết các trường hợp) và xác minh xem id người dùng của bạn có quyền bằng cách thực hiện ls. Trong trường hợp userid của bạn không có quyền, bạn nên yêu cầu chủ sở hữu của thư mục cấp quyền ghi cho bạn. Vì vậy, đăng nhập là chủ sở hữu/người sử dụng siêu và thực hiện

cd/var/lib/hive/metastore/metastore_db

chmod a + rwx. --recursive

Được cảnh báo rằng điều này sẽ cấp quyền cho tất cả người dùng. Mặc dù vậy, các bit r-w-x bit tinh chỉnh.

  • Lý do khác có thể là derby là một cơ sở dữ liệu người dùng duy nhất.Vì vậy, xin vui lòng xóa các tập tin khóa bằng cách vào

cd/var/lib/hive/metastore/metastore_db

rm * .lck

1

Cố gắng tránh sử dụng nhúng derby máy chủ vì nó phụ thuộc vào các thư mục và có nhiều hạn chế.

Nó luôn luôn tốt hơn để cấu hình tổ ong của bạn với máy chủ mysql. Bạn chỉ cần làm theo cấu hình trong hive-site.xml

<property> 
    <name>javax.jdo.option.ConnectionURL</name> 
    <value>jdbc:mysql://localhost:3306/hivedb?createDatabaseIfNotExist=true</value> 
</property> 
<property> 
    <name>javax.jdo.option.ConnectionDriverName</name> 
    <value>com.mysql.jdbc.Driver</value> 
</property> 
<property> 
    <name>javax.jdo.option.ConnectionUserName</name> 
    <value>user</value> 
</property> 
<property> 
    <name>javax.jdo.option.ConnectionPassword</name> 
    <value>password</value> 
</property> 

Nhưng hãy nhớ để cung cấp cho phép tất cả người dùng muốn sử dụng tổ ong bằng lệnh dưới đây.

cấp quyền

mysql> GRANT ALL ON hivedb.* TO [email protected]'00.00.00.00'; 

FLUSH PRIVILEGES, Cho Server để tải lại BẢNG CẤP

mysql> FLUSH PRIVILEGES; 
0

1) Loại bỏ các khóa là một lựa chọn, nhưng điều đó đôi khi có thể giết chết công việc được sử dụng bởi một số người dùng khác đột ngột. 2) Bạn có thể sử dụng tổ ong trong các thư mục khác nhau cho một nhóm nhỏ. 3) nếu bạn muốn chia sẻ sau đó sử dụng máy chủ derby và đặt xml như trên.

0

Trong trường hợp của tôi, tôi đang sử dụng sqoop để nhập bảng mysql để tổ chức. Hive đã cấu hình metastore mysql. Nhưng bằng cách nào đó sqoop đã không biết rằng bởi vì nó đã không thể truy cập tập tin cấu hình của hive. Khi tôi đã đặt biến môi trường HIVE_CONF_DIR, nó hoạt động.

0

kiểm tra xem người dùng hiện có đang đăng nhập bằng có quyền ghi trên tệp metastore_db hay không. làm theo các bước dưới đây:

  1. kiểm tra hiện đang đăng nhập sử dụng $ whoami

  2. điều hướng đến/var/lib/hive/metastore/metastore_db

  3. phép tập tin kiểm tra% ls -l
  4. nếu người dùng không có quyền ghi, hãy cấp quyền sử dụng lệnh chmod

hy vọng điều này sẽ l giải quyết vấn đề

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