# cat /etc/hosts 172.27.133.60 hadoop-01 172.27.133.61 hadoop-02 172.27.133.62 hadoop-03 172.27.133.63 hadoop-04
# ssh-keygen # ssh-copy-id root@hadoop-02/03/04
# cat /etc/selinux/config SELINUX=disabled # systemctl stop firewalld # systemctl disable firewalld
# tar -xf /data/software/jdk-8u171-linux-x64.tar.gz -C /usr/local/java # tar -xf /data/software/hadoop-3.2.0.tar.gz -C /data/hadoop # cat /etc/profile export HADOOP_HOME=/data/hadoop/hadoop-3.2.0 export JAVA_HOME=/usr/local/java/jdk1.8.0_171 export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop # source /etc/profile # java -version java version "1.8.0_171" Java(TM) SE Runtime Environment (build 1.8.0_171-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
# cd /data/hadoop/hadoop-3.2.0/etc/hadoop # vim hadoop-env.sh 和 mapred-env.sh 和 yarn-env.sh,向腳本添加JAVA_HOME export JAVA_HOME=/usr/local/java/jdk1.8.0_171 # hadoop version Hadoop 3.2.0 Source code repository https://github.com/apache/hadoop.git -r e97acb3bd8f3befd27418996fa5d4b50bf2e17bf Compiled by sunilg on 2019-01-08T06:08Z Compiled with protoc 2.5.0 From source with checksum d3f0795ed0d9dc378e2c785d3668f39 This command was run using /data/hadoop/hadoop-3.2.0/share/hadoop/common/hadoop-common-3.2.0.jar
在hadoop-3.2.0/etc/hadoop目錄下,修改core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、workers文件,具體參數按照實際狀況修改。java
(文件系統)node
<configuration> <property> <!-- 配置hdfs地址 --> <name>fs.defaultFS</name> <value>hdfs://hadoop-01:9000</value> </property> <property> <!-- 保存臨時文件目錄,需先在/data/hadoop下建立tmp目錄 --> <name>hadoop.tmp.dir</name> <value>/data/hadoop/tmp</value> </property> </configuration>
# mkdir /data/hadoop/tmp
(副本數)linux
<configuration> <property> <!-- 主節點地址 --> <name>dfs.namenode.http-address</name> <value>hadoop-01:50070</value> </property> <property> <name>dfs.secondary.http.address</name> <value>hadoop-02:50070</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/data/hadoop/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/data/hadoop/dfs/data</value> </property> <property> <!-- 備份數爲默認值2 --> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> <property> <name>dfs.permissions</name> <value>false</value> <description>配置爲false後,能夠容許不要檢查權限就生成dfs上的文件,方便卻是方便了,可是你須要防止誤刪除.</description> </property> </configuration>
(資源調度框架)git
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>hadoop-01:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>hadoop-01:19888</value> </property> <property> <name>mapreduce.application.classpath</name> <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value> </property> </configuration>
<configuration> <!-- Site specific YARN configuration properties --> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop-01</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>172.27.133.60:8088</value> <description>配置外網只須要替換外網ip爲真實ip,不然默認爲 localhost:8088</description> </property> <property> <name>yarn.scheduler.maximum-allocation-mb</name> <value>2048</value> <description>每一個節點可用內存,單位MB,默認8182MB</description> </property> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> <description>忽略虛擬內存的檢查,若是你是安裝在虛擬機上,這個配置頗有用,配上去以後後續操做不容易出問題。</description> </property> <property> <name>yarn.nodemanager.env-whitelist</name> <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value> </property> </configuration>
添加從節點地址,IP或者hostnamegithub
hadoop-02 hadoop-03 hadoop-04
# scp -r /data/hadoop root@hadoop-02:/data/hadoop # scp -r /data/hadoop root@hadoop-03:/data/hadoop # scp -r /data/hadoop root@hadoop-04:/data/hadoop
在第二行空白位置添加hdfs權限 # cat sbin/start-dfs.sh # cat sbin/stop-dfs.sh #!/usr/bin/env bash HDFS_DATANODE_USER=root HDFS_DATANODE_SECURE_USER=hdfs HDFS_NAMENODE_USER=root HDFS_SECONDARYNAMENODE_USER=root ···
在第二行空白位置添加Yarn權限 # cat sbin/start-yarn.sh # cat sbin/stop-yarn.sh #!/usr/bin/env bash YARN_RESOURCEMANAGER_USER=root HDFS_DATANODE_SECURE_USER=yarn YARN_NODEMANAGER_USER=root ···
若是不添加權限,在啓動時候會報錯web
ERROR: Attempting to launch hdfs namenode as root ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting launch. Starting datanodes ERROR: Attempting to launch hdfs datanode as root ERROR: but there is no HDFS_DATANODE_USER defined. Aborting launch. Starting secondary namenodes [localhost.localdomain] ERROR: Attempting to launch hdfs secondarynamenode as root ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting launch.
# bin/hdfs namenode -format
# sbin/start-all.sh
# sbin/start-dfs.sh # sbin/start-yarn.sh
主節點hadoop-01shell
# jps 32069 SecondaryNameNode 2405 NameNode 2965 ResourceManager 3645 Jps
從節點hadoop-02apache
# jps 25616 NodeManager 25377 DataNode 25508 SecondaryNameNode 25945 Jps
從節點hadoop-03vim
# jps 14946 NodeManager 15207 Jps 14809 DataNode
從節點hadoop-04bash
# jps 14433 Jps 14034 DataNode 14171 NodeManager4
http://hadoop-01:8088打開ResourceManager頁面
http://hadoop-01:50070打開Hadoop Namenode頁面