Hadoop
Apache Hadoop 是一個支持在商業硬件大型集群上運行應用程式框架。Hadoop框架透明地提供應用程式可靠性和數據傳輸。Hadoop實現了一個名為Map/Reduce計算模式,應用程式被劃分成許多小片段,這些小片段可能在集群中的任何節點上被執行或反覆執行。此外,它提供了一個分佈式文件系統(HDFS)來存儲在計算節點上的數據,它使集群有非常高的帶寬。MapReduce和Hadoop分佈式文件系統使框架能自行處理失效節點。
安裝[編輯 | 編輯原始碼]
安裝 hadoopAUR包。
配置[編輯 | 編輯原始碼]
默認情況下, hadoop已經被配置成偽分佈模式。在一些不同環境下要修改文件 /etc/profile.d/hadoop.sh
中的和傳統Hadoop不同的變量。
環境變量 | 至 | 描述 | 權限 |
---|---|---|---|
HADOOP_CONF_DIR | /etc/hadoop
|
存放配置文件
|
Read |
HADOOP_LOG_DIR | /tmp/hadoop/log
|
存放日誌文件
|
Read and Write |
HADOOP_SLAVES | /etc/hadoop/slaves
|
命名遠程從屬主機
|
Read |
HADOOP_PID_DIR | /tmp/hadoop/run
|
存放pid文件
|
Read and Write |
你需要正確設置下列文件。
/etc/hosts /etc/hostname /etc/locale.conf
你必須在 /etc/hadoop/hadoop-env.sh
告訴hadoop你的JAVA_HOME因為它並不自己找它自己安裝的的地方:
/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk/
用下面命令檢查安裝:
hadoop version
如果你得到警告信息"WARNING: HADOOP_SLAVES has been replaced by HADOOP_WORKERS. Using value of HADOOP_SLAVES." 那麼用下面的語句替換掉替換掉/etc/profile.d/hadoop.sh
的 export HADOOP_SLAVES=/etc/hadoop/slaves
:
export HADOOP_WORKERS=/etc/hadoop/workers
單節點設置[編輯 | 編輯原始碼]
獨立操作[編輯 | 編輯原始碼]
默認地, Hadoop被配置為非分佈式模式,作為一個單獨的Java進程. 這對調試很有幫助.
下面的例子複製了解壓縮的conf目錄來用作輸入然後尋找並展示每個匹配正則表達式的結果。輸出被寫入給定的輸出目錄。
$ HADOOP_CONF_DIR=/usr/lib/hadoop/orig_etc/hadoop/ $ mkdir input $ cp /etc/hadoop/*.xml input $ hadoop jar /usr/lib/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0.jar grep input output 'dfs[a-z.]+' $ cat output/*
偽分佈式操作[編輯 | 編輯原始碼]
Hadoop 能在偽分佈式模式下運行在單一節點,這樣每個hadoop守護進程運行在不同的Java進程.
默認地,hadoop將會以root用戶運行。你可以改變默認用戶,在 /etc/conf.d/hadoop
裡的:
HADOOP_USERNAME="<your user name>"
設置無需密碼的ssh[編輯 | 編輯原始碼]
確定你的 sshd服務啟用了, 或者用systemctl enable sshd
手動開啟. 現在確定你能不用密碼連接到localhost:
$ ssh localhost
如果你不能用ssh無密碼連接到localhost, 執行下面的命令:
$ ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys $ chmod 0600 ~/.ssh/authorized_keys
確定/etc/ssh/sshd_config
文件裡的下面這行被註釋了
/etc/ssh/sshd_config
#AuthorizedKeysFile .ssh/authorized_keys
執行[編輯 | 編輯原始碼]
格式化一個新的分佈式文件系統:
$ hadoop namenode -format
開啟hadoop守護進程:
# systemctl start hadoop-datanode # systemctl start hadoop-jobtracker # systemctl start hadoop-namenode # systemctl start hadoop-secondarynamenode # systemctl start hadoop-tasktracker
hadoop守護進程的日誌輸出寫在 ${HADOOP_LOG_DIR}
目錄(默認在 /var/log/hadoop
).
為NameNode和JobTracker流量網絡接口; 默認它們在:
- NameNode - http://localhost:50070/
- JobTracker - http://localhost:50030/
複製輸入文件到分佈式文件系統:
$ hadoop fs -put /etc/hadoop input
運行一些提供的例子:
$ hadoop jar /usr/lib/hadoop/hadoop-examples-*.jar grep input output 'dfs[a-z.]+'
檢查輸出文件:
複製分佈式文件系統的輸出文件到本地文件系統並檢查它們:
$ hadoop fs -get output output $ cat output/*
或者
在分佈式文件系統瀏覽輸出文件:
$ hadoop fs -cat output/*
當你結束後停止以下守護進程:
# systemctl stop hadoop-datanode # systemctl stop hadoop-jobtracker # systemctl stop hadoop-namenode # systemctl stop hadoop-secondarynamenode # systemctl stop hadoop-tasktracker