Theo mặc định, Hadoop đặt hadoop.tmp.dir vào thư mục/tmp của bạn. Đây là một vấn đề, bởi vì/tmp bị xóa sổ bởi Linux khi bạn khởi động lại, dẫn đến lỗi này đáng yêu từ JobTracker:Khi chạy Hadoop ở chế độ giả phân tán, tôi nên sử dụng thư mục nào cho hadoop.tmp.dir?
2012-10-05 07:41:13,618 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: localhost/127.0.0.1:8020. Already tried 0 time(s).
...
2012-10-05 07:41:22,636 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: localhost/127.0.0.1:8020. Already tried 9 time(s).
2012-10-05 07:41:22,643 INFO org.apache.hadoop.mapred.JobTracker: problem cleaning system directory: null
java.net.ConnectException: Call to localhost/127.0.0.1:8020 failed on connection exception: java.net.ConnectException: Connection refused
at org.apache.hadoop.ipc.Client.wrapException(Client.java:767)
Cách duy nhất tôi đã tìm thấy để sửa lỗi này là để định dạng lại nút tên của bạn, mà xây dựng lại thư mục/tmp/hadoop-root, tất nhiên sẽ bị xóa sổ khi bạn khởi động lại.
Vì vậy, tôi đã tiếp tục và tạo một thư mục có tên/hadoop_temp và cung cấp cho tất cả người dùng quyền truy cập đọc/ghi vào thư mục đó. sau đó tôi đặt khách sạn này trong tôi core-site.xml:
<property>
<name>hadoop.tmp.dir</name>
<value>file:///hadoop_temp</value>
</property>
Khi tôi đang định dạng namenode tôi, Hadoop có vẻ hạnh phúc, cho tôi tin nhắn này:
12/10/05 07:58:54 INFO common.Storage: Storage directory file:/hadoop_temp/dfs/name has been successfully formatted.
Tuy nhiên, khi tôi nhìn vào/hadoop_temp, tôi nhận thấy rằng thư mục trống. Và rồi khi tôi khởi động lại Hadoop và kiểm tra log JobTracker của tôi, tôi thấy điều này:
2012-10-05 08:02:41,988 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: localhost/127.0.0.1:8020. Already tried 0 time(s).
...
2012-10-05 08:02:51,010 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: localhost/127.0.0.1:8020. Already tried 9 time(s).
2012-10-05 08:02:51,011 INFO org.apache.hadoop.mapred.JobTracker: problem cleaning system directory: null
java.net.ConnectException: Call to localhost/127.0.0.1:8020 failed on connection exception: java.net.ConnectException: Connection refused
Và khi tôi kiểm tra log namenode của tôi, tôi thấy điều này:
2012-10-05 08:00:31,206 INFO org.apache.hadoop.hdfs.server.common.Storage: Storage directory /opt/hadoop/hadoop-0.20.2/file:/hadoop_temp/dfs/name does not exist.
2012-10-05 08:00:31,212 ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed.
org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /opt/hadoop/hadoop-0.20.2/file:/hadoop_temp/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.
Vì vậy, rõ ràng tôi đã không cấu hình một thứ gì đó đúng. Hadoop vẫn hy vọng sẽ thấy các tệp của nó trong thư mục/tmp mặc dù tôi đã đặt hadoop.tmp.dir thành/hadoop_temp trong tệp core-site.xml. Tôi đã làm gì sai? Giá trị "đúng" được chấp nhận cho hadoop.tmp.dir là gì?
Câu hỏi thưởng: Tôi nên sử dụng gì cho hbase.tmp.dir? Thông tin
hệ thống:
Ubuntu 12.04, Apache Hadoop .20.2, Apache HBase .92.1
Cảm ơn đã dành một cái nhìn!