2012-01-11 28 views
31

Tôi đang cố cài đặt Hadoop trên Ubuntu 11.10. Tôi đặt biến JAVA_HOME trong file conf/hadoop-env.sh tới:Hadoop: «LRI: JAVA_HOME chưa được đặt»

# export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk 

và sau đó tôi thực hiện các lệnh này (độc lập Operation):

$ mkdir input 
$ cp conf/*.xml input 
$ bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+' 
$ cat output/* 

nhưng tôi có lỗi sau khi thực hiện lệnh thứ ba:

LRI: JAVA_HOME không được đặt

Biến số JAVA_HOME có được đặt chính xác không?

+6

Là '# 'thực sự ở đó? Nếu vậy, điều đó có nghĩa là dòng là một bình luận. –

+0

@DaveNewton đăng câu trả lời đó để tôi có thể bình chọn! –

+1

Đây là giải pháp cho vấn đề này. Vấn đề liên quan đến khái niệm tương tác cũ/không tương tác và đăng nhập/không đăng nhập: http://thinkinginsoftware.blogspot.com/2012/06/hadoop-pob-and-error-javahome-is-not.html –

Trả lời

10

Nhập echo $JAVA_HOME trong thiết bị đầu cuối của bạn để đảm bảo rằng JAVA_HOME được đặt.

Bạn cũng có thể nhập java -version để biết bạn đang sử dụng phiên bản java nào.

Bằng cách này, đọc mô tả của bạn có vẻ như thực sự bạn viết

export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk 

trong file conf/hadoop-env.sh, bạn nên viết nó trong thiết bị đầu cuối của bạn hoặc trong ~/.bashrc hay ~/.profile sau đó gõ source < path to modified file >.

+1

có, # là mặc định ở đó vì vậy tôi xóa nó và tôi đã thử 4 lệnh này một lần nữa và nó hoạt động. nhưng khi tôi gõ "echo $ JAVA_HOME", tôi không nhận được giá trị và khi tôi gõ "java -version" tôi nhận được "phiên bản java" 1.6.0_23 ". Có đúng không? OpenJDK Runtime Environment (IcedTea6 1.11pre) (6b23 ~ pre11-0ubuntu1.11.10) OpenJDK Server VM (xây dựng 20.0-b11, chế độ hỗn hợp) ". Nó có đúng không? – koukou

+1

Nếu không có gì xuất hiện writting echo $ JAVA_HOME ", có nghĩa là biến environnement không được thiết lập đúng. Gõ sudo vi ~/.bashrc sau đó thêm vào tệp: xuất JAVA_HOME = < java_path > xuất PATH = $ PATH: < java_path >/bin. gõ sudo source ~/.bashrc –

+1

Tôi đang làm theo hướng dẫn này http://hadoop.apache.org/common/docs/stable/single_node_setup.html#Download: JAVA_HOME được định nghĩa chỉ trong conf/hadoop-env.sh Tôi đã thêm xuất PATH = $ PATH: < java_path >/bin trong tệp hadoop-env.sh, gõ "echo $ PATH" đường dẫn xuất hiện nhưng gõ "echo $ JAVA_HOME" một khoảng trống xuất hiện! – koukou

41

Hãy chắc chắn rằng bạn đã gỡ bỏ các thẻ bình luận và thay đổi của bạn JAVA_HOME trong hadoop-env.sh cũng như thích hợp .bashrc và/hoặc .profile:

# export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk 

nên

export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk 

Bạn có thể đặt JAVA_HOMEPATH cho tất cả người dùng của bạn (đảm bảo trước đó bạn chưa đặt đường dẫn này sai đường dẫn) trong /etc/profile.

Ngoài ra, đừng quên kích hoạt thay đổi mới bằng cách đăng xuất/đăng nhập hoặc bằng cách thực hiện source /etc/profile.

+0

yes- brilliant! –

24

Bạn nên đặt JAVA_HOME trong tệp hadoop-env.sh cũng nằm trong thư mục cấu hình Hadoop. Theo mặc định, dòng thiết lập JAVA_HOME được nhận xét.

+0

Trong phiên bản hiện tại 2.9.0, nó hiện diện nhưng sẽ chuyển tiếp JAVA_HOME của môi trường hiện tại. Tài liệu ở đây gợi ý rằng giá trị này phải được mã hóa cứng cho các thiết lập được phân phối. Tôi thấy rằng trong một hoạt động giả dạng nút đơn, nó giúp thiết lập nó ở đây. YMMV. – russellpierce

-7
  • hadoop LỖI: JAVA_HOME không được thiết lập

lỗi Trên đây là vì không gian ở giữa hai từ.

Ví dụ: Java nằm ở C: \ Program Files \ Java -> Không gian ở giữa Chương trìnhfile sẽ gây ra vấn đề trên. Nếu bạn xóa không gian, nó sẽ không hiển thị bất kỳ lỗi nào.

6

Bạn có thể thêm vào tập tin .bashrc của bạn:

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::") 

và nó sẽ tự động thay đổi khi bạn cập nhật các gói của bạn.

1

Sao chép tệp export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk thành hadoop-env.sh này.

JAVA_HOME là vị trí có sẵn tệp nhị phân java.

0

Tôi đã thử các giải pháp trên nhưng sau đây làm việc trên tôi

export JAVA_HOME=/usr/java/default 
Các vấn đề liên quan