Centos7安裝Hadoop2.7


准備

1、三台Centos7的機器:

hostname IP地址 部署規划
node1 172.20.0.4 NameNode、DataNode
node2 172.20.0.5 DataNode
node3 172.20.0.6 DataNode

在/etc/hosts中都加上主機名解析:

172.20.0.4  node1
172.20.0.5  node2
172.20.0.6  node3

2、配置node1到三台機器的免密登錄。

3、全部安裝jdk8,配置JAVA_HOME。

4、官網下載安裝包:hadoop-2.7.7.tar.gz(推薦去清華大學或中科大的開源鏡像站)。

6、三台都創建路徑/mydata/,並配置環境變量:

export HADOOP_HOME=/mydata/hadoop-2.7.7
export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH

配置

先在node1上修改hadoop的配置,完成后再統一復制到其他節點,保證配置內容一致。

解壓hadoop-2.7.7.tar.gz到/mydata/,進入/mydata/hadoop-2.7.7/etc/hadoop/,進行配置(有些文件需要去掉,template后綴,或拷貝一份重命名):

<!-- 文件名 core-site.xml -->
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://node1:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/mydata/data/hadoop-${user.name}</value> </property> </configuration>
<!-- 文件名 hdfs-site.xml -->
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
</configuration>
<!-- 文件名 mapred-site.xml 拷貝自mapred-site.xml.template -->
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
<!-- 文件名 yarn-site.xml -->
<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>node1</value>
    </property>
</configuration>
<!-- 文件名 slaves -->
node1
node2
node3
配置項  含義
fs.defaultFS namenode上文件系統的地址
hadoop.tmp.dir 多個路徑的基礎,包括namenode和datanode的數據,默認是/tmp/hadoop-${user.name}
dfs.replication 副本數,這里設為2,這樣集群中共三份數據,適用日常大部分情況了
yarn.resourcemanager.hostname yarn資源管理器所在host
slaves 該文件中列出的是作為從節點的datanode,若node1只打算作為namenode則不需要寫進去

默認日志目錄在$HADOOP_HOME/logs,pid文件在/tmp,可以進行修改:

# 文件名 hadoop-env.sh
export HADOOP_PID_DIR="/mydata/data/pid"
export HADOOP_LOG_DIR="/mydata/logs/hadoop"
# 文件名 yarn-env.sh
export YARN_LOG_DIR="/mydata/logs/yarn"
export YARN_PID_DIR="/mydata/data/pid"

配置完成后將hadoop程序文件拷貝到其他兩台:

node1> scp -r /mydata/hadoop-2.7.7/ root@node2:/mydata/
node1> scp -r /mydata/hadoop-2.7.7/ root@node3:/mydata/

啟動

需要先在node1初始化namenode(只有第一次啟動前需要,除非刪除了hadoop.tmp.dir下namenode的數據):

node1> hdfs namenode -format

看到 Storage directory /mydata/data/hadoop-root/dfs/name has been successfully formatted. 則表示成功。

下面先啟動hdfs,后啟動yarn:

node1> start-dfs.sh
node1> start-yarn.sh
node1上用jps命令驗證進程
NameNode、SecondaryNameNode、ResourceManagerDataNodeNodeManager
node2上用jps命令驗證進程
DataNode、NodeManager
node3上用jps命令驗證進程
DataNode、NodeManager

測試

通過瀏覽器可以訪問以下地址:

namenode的后台 http://node1:50070
yarn資源管理的后台 http://node1:8088

前者切換到 Datanodes :

 后者進入 Cluster -> Nodes :

 下面執行一個官方示例(wordcount),先准備兩個文件,內容如下:

# 文件名 1.txt
天空    sky
天空    sky
天空    sky

# 文件名 2.txt
海洋    ocean
海洋    ocean

將這兩個文件上傳到hdfs,然后執行任務:

# 創建路徑(將root改為自己的用戶名)
node1> hdfs dfs -mkdir -p /user/root/input
# 上傳文件
node1> hdfs dfs -put *.txt input
# 執行wordcount任務統計文件中每個單詞的數量,並等待其執行結束
node1> hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount input output
# 查看結果
node1> hdfs dfs -cat output/*
ocean  2
sky   3
天空   3
海洋   2
# 若要重復執行任務,需要刪除output文件夾,或者在命令中換一個輸出目錄
node1> hdfs dfs -rm -r output

可以在yarn的資源管理平台 Cluster -> Applications 查看到該任務:

 啟用jobhistory

這個不是必須的,但可以更好的查看job的歷史記錄和管理job的日志。

# 文件名 mapred-env.sh
export HADOOP_MAPRED_LOG_DIR="/mydata/logs/mapred"
export HADOOP_MAPRED_PID_DIR="/mydata/data/pid"
<!-- 文件名 mapred-site.xml -->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>node1:10020</value>
    </property>
<!-- 文件名 yarn-site.xml 日志聚合,開啟后job的日志不再存到node本地,而是上傳到hdfs -->
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>

停止集群:

node1> stop-yarn.sh
node1> stop-dfs.sh

然后將修改的配置同步更新到其他所有節點,並在啟動集群后啟動historyserver:

node1> start-dfs.sh
node1> start-yarn.sh
node1> mr-jobhistory-daemon.sh start historyserver
# 通過jps查看進程
node1> jps
...
[pid]  JobHistoryServer
...

通過瀏覽器訪問 http://node1:19888 :

默認情況下,日志會分散在各個工作的datanode,查看非常麻煩;配置了日志聚合后則會上傳到hdfs,各節點本地的會被刪除,可以點擊上圖的 Job ID ,然后 ApplicationMaster -> logs 即可看到聚合后的日志:

 在yarn的資源管理后台 http://node1:8088/cluster/apps ,點擊 application 后面的 History 就可以跳轉到 jobhistory:

另外,還可以通過命令行查看聚合日志:

shell> yarn logs -applicationId [application id]

yarn的資源管理后台 http://node1:8088/cluster/apps 直接就能看到 application id,而在 jobhistory 中只要將 Job ID 的job前綴替換為application即可。

over


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM