版本
hadoop 3.2.0
集群规划
机器 |
ip |
分配节点 |
cdh1 |
172.16.100.63 |
NameNode、DataNode、ResourceManager |
cdh2 |
172.16.100.64 |
DataNode、NodeManager SecondaryNameNode |
cdh3 |
172.16.100.71 |
DataNode NodeManager HistoryServer |
配置服务器
- 时间同步
- 免密码登录
- hosts
- 关闭防火墙
- 安装jdk
在所有服务器(cdh1,cdh2,cdh3)配置环境变量
vi /etc/profile.d/hadoop.sh
1 2 3
| export HADOOP_HOME=/opt/hadoop/hadoop/hadoop-3.2.0 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
|
source /etc/profile.d/hadoop.sh
配置Hadoop JDK路径,定义集群操作用户,在hadoop-env.sh文件中添加如下内容
配置文件路径 hadoop-3.2.0/etc/hadoop
vi hadoop-env.sh
1 2 3 4 5 6 7 8 9 10
| export JAVA_HOME=/usr/java/jdk1.8.0_301
export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export YARN_RESOURCEMANAGER_USER=root export YARN_NODEMANAGER_USER=root
export HADOOP_PID_DIR=/opt/hadoop/hadoop/hadoop-3.2.0/pids export HADOOP_LOG_DIR=/opt/hadoop/hadoop/hadoop-3.2.0/logs
|
配置core-site.xml
1 2 3 4 5 6 7 8 9 10
| <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://cdh1:8020</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/opt/hadoop/hadoop/hadoop-3.2.0/tmp</value> </property> </configuration>
|
fs.defaultFS
为NameNode
的地址
hadoop.tmp.dir
为hadoop
临时目录的地址
配置hdfs-site.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>cdh2:50090</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/opt/hadoop/hadoop/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/opt/hadoop/hadoop/data</value> </property> </configuration>
|
dfs.namenode.secondary.http-address
是指定secondaryNameNode
的http访问地址和端口号,因为在规划中,我们将cdh2
规划为SecondaryNameNode
服务器。
配置workers
vi workers
workers
文件是指定HDFS
上有哪些DataNode
节点。
配置yarn-site.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| <configuration>
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.localizer.address</name> <value>0.0.0.0:8140</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>cdh1</value> </property> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property> <property> <name>yarn.log.server.url</name> <value>http://cdh3:19888/jobhistory/logs</value> </property> </configuration>
|
根据规划yarn.resourcemanager.hostname
这个指定resourcemanager
服务器指向cdh1。
yarn.log-aggregation-enable
是配置是否启用日志聚集功能。
yarn.log-aggregation.retain-seconds
是配置聚集的日志在HDFS
上最多保存多长时间。
配置mapred-site.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>yarn.app.mapreduce.am.env</name> <value>HADOOP_MAPRED_HOME=/opt/hadoop/hadoop/hadoop-3.2.0</value> </property> <property> <name>mapreduce.map.env</name> <value>HADOOP_MAPRED_HOME=/opt/hadoop/hadoop/hadoop-3.2.0</value> </property> <property> <name>mapreduce.reduce.env</name> <value>HADOOP_MAPRED_HOME=/opt/hadoop/hadoop/hadoop-3.2.0</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>cdh3:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>cdh3:19888</value> </property>
</configuration>
|
mapreduce.framework.name
设置mapreduce
任务运行在yarn
上。
mapreduce.jobhistory.address
是设置mapreduce
的历史服务器安装在cdh3机器上。
mapreduce.jobhistory.webapp.address
是设置历史服务器的web
页面地址和端口号。
复制Hadoop配置好的包到其他Linux主机
1 2
| scp -r hadoop/ cdh2:/opt/hadoop/ scp -r hadoop/ cdh3:/opt/hadoop/
|
格式化NameNode
在NameNode机器上执行格式化
如果需要重新格式化NameNode
,需要先将原来NameNode
和DataNode
下的文件全部删除,不然会报错,NameNode
和DataNode
所在目录是在core-site.xml
中hadoop.tmp.dir
、dfs.namenode.name.dir
、dfs.datanode.data.dir
属性配置的。
因为每次格式化,默认是创建一个集群ID,并写入NameNode
和DataNode
的VERSION
文件中(VERSION
文件所在目录为hdfs/name/current
和 hdfs/data/current
),重新格式化时,默认会生成一个新的集群ID
,如果不删除原来的目录,会导致namenode
中的VERSION
文件中是新的集群ID,而DataNode
中是旧的集群ID
,不一致时会报错。
启动集群
启动HDFS
在cdh1上执行
启动YARN
在cdh1上执行
启动日志服务
因为我们规划的是在cdh3服务器上运行jobhistoryserver服务,所以要在cdh3上启动。
1
| mapred --daemon start historyserver
|
查看HDFS Web页面
http://cdh1:9870/
3.0.0以上版本访问WebUI默认端口从50070改为9870
查看YARN Web页面
http://cdh1:8088/
强制namenode离开安全模式
1
| hadoop dfsadmin -safemode leave
|