文章目录
1 切 Hadoop 权限用户
ZK 检测:
zkServer status
JDK 检测:
java -version
Scala 检测:
scala -version
2 解压缩、修改 etc/profile 配置文件
cd /hadoop/hadoop-2.7.3/etc/hadoop
vim core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定hdfs的nameservice为ns -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://nns</value>
</property>
<!-- 指定hadoop临时目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/hadoop-2.7.3/tmp</value>
</property>
<!-- 指定zk -->
<property>
<name>ha.zookeeper.quorum</name>
<value>biz-63:2181,biz-140:2181,biz-141:2181</value>
</property>
<!-- Namenode向JournalNode发起的ipc连接请求的重试最大次数 -->
<property>
<name>ipc.client.connect.max.retries</name>
<value>100</value>
<description>Indicates the number of retries a client will make to establish a server connection.
</description>
</property>
<!-- Namenode向JournalNode发起的ipc连接请求的重试间隔时间 -->
<property>
<name>ipc.client.connect.retry.interval</name>
<value>10000</value>
<description>Indicates the number of milliseconds a client will wait for before retrying to establish a server connection.
</description>
</property>
<!-- 开启回收功能,并设置垃圾删除间隔(分钟) -->
<property>
<name>fs.trash.interval</name>
<value>1440</value>
<description>Trash deletion interval in minutes.If zero, the trash feature is disabled.</description>
</property>
hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 副本数 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop/hadoop-2.7.3/nndata/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/hadoop/dfs/data</value>
</property>
<!--以下是HDFS HA的配置-->
<!--指定HDFS的nameservices名称为nn,需要和core-site.xml中保持一致-->
<property>
<name>dfs.nameservices</name>
<value>cluster</value>
</property>
<!--指定mycluster的两个NameNode的名称分别位ActiveNN和StandbyNN-->
<property>
<name>dfs.ha.namenodes.nn</name>
<value>nn1,nn2</value>
</property>
<!--配置ActiveNN和StandbyNN的rpc通信端口-->
<property>
<name>dfs.namenode.rpc-address.nn.nn1</name>
<value>biz-63:9000</value>
</property>
<property>
<name>dfs.namenode.rpc-address.nn.nn2</name>
<value>biz-140:9000</value>
</property>
<!--配置ActiveNN和StandbyNN的http通信端口-->
<property>
<name>dfs.namenode.http-address.nn.nn1</name>
<value>biz-63:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.nn.nn2</name>
<value>biz-140:50070</value>
</property>
<!--指定NameNode的元数据在JournalNode上的存放位置-->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://biz-63:8485;biz-140:8485;biz-141:8485/cluster</value>
</property>
<!--JournalNode上元数据和日志文件存放位置-->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/data/hadoop/journal</value>
</property>
<!--开启NameNode失败自动切换-->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!--NameNode失败自动切换实现方式-->
<property>
<name>dfs.client.failover.proxy.provider.nn</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!--隔离机制方式,确保任何时间只有一个NameNode处于活动状态-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence
shell(/bin/true)</value>
</property>
<!--使用sshfence隔离机制需要SSH免密码认证-->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/wftapp/.ssh/id_rsa</value>
</property>
<!--配置sshfence隔离机制超时时间-->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>
mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!--配置MapReduce JobHistory Server地址,默认端口10020-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>0.0.0.0:10020</value>
<description>MapReduce JobHistory Server IPC host:port</description>
</property>
<!--配置MapReduce JobHistory Server HTTP地址,默认端口19888-->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>0.0.0.0:19888</value>
<description>MapReduce JobHistory Server Web UI host:port</description>
</property>
</configuration>
yarn-site.xml
<?xml version="1.0"?>
<configuration>
<!-- Site specific YARN configuration properties -->
<!--启用RM高可用-->
<property>
<name>yarn.resourcemaneger.ha.enabled</name>
<value>true</value>
</property>
<!--指定RM的cluster-id-->
<property>
<name>yarn.resourcemaneger.cluster-id</name>
<value>looc</value>
</property>
<!--指定两台RM主机名标识符-->
<property>
<name>yarn.resourcemaneger.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!--RM主机1-->
<property>
<name>yarn.resourcemaneger.hostname.rm1</name>
<value>biz-140</value>
</property>
<!--RM主机2-->
<property>
<name>yarn.resourcemaneger.hostname.rm2</name>
<value>bit-141</value>
</property>
<!--RM故障自动切换-->
<property>
<name>yarn.resourcemaneger.ha.automatic-failover.recover.enabled</name>
<value>true</value>
</property>
<!--RM故障自动恢复-->
<property>
<name>yarn.resourcemaneger.recovery.enabled</name>
<value>true</value>
</property>
<!--指定ZK集群地址-->
<property>
<name>yarn.resourcemaneger.zk-address</name>
<value>biz-63:2181,biz-140:2181,biz-141:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--启用日志聚集功能-->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://0.0.0.0:19888/jobhistory/logs</value>
</property>
<!--向RM调度资源地址-->
<property>
<name>yarn.resourcemaneger.scheduler.address.rm1</name>
<value>biz-140:8030</value>
</property>
<property>
<name>yarn.resourcemaneger.scheduler.address.rm2</name>
<value>biz-141:8030</value>
</property>
<!--NodeManeger通过该地址交换信息-->
<property>
<name>yarn.resourcemaneger.resource-tracker.address.rm1</name>
<value>biz-140:8031</value>
</property>
<property>
<name>yarn.resourcemaneger.resource-tracker.address.rm2</name>
<value>biz-141:8031</value>
</property>
<!--客户端通过该地址向RM提交对应用程序的操作-->
<property>
<name>yarn.resourcemaneger.address.rm1</name>
<value>biz-140:8032</value>
</property>
<property>
<name>yarn.resourcemaneger.address.rm2</name>
<value>biz-141:8032</value>
</property>
<!--管理员通过该地址向RM发送管理命令-->
<property>
<name>yarn.resourcemaneger.admin.address.rm1</name>
<value>biz-140:8033</value>
</property>
<property>
<name>yarn.resourcemaneger.admin.address.rm2</name>
<value>biz-141:8033</value>
</property>
<!--RM HTTP访问地址,查看集群信息-->
<property>
<name>yarn.resourcemaneger.webapp.address.rm1</name>
<value>biz-140:8088</value>
</property>
<property>
<name>yarn.resourcemaneger.webapp.address.rm2</name>
<value>biz-141:8088</value>
</property>
</configuration>
3 设置 slaves
4 环境变量
1 切换 root 用户 or sudo
2 写入配置
3 使其生效 source /etc/profile
export HADOOP_HOME=/opt/hadoop/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HADOOP_HDFS_HOME=${HADOOP_HOME}
export HADOOP_YARN_HOME=${HADOOP_HOME}
5 ZKFC
进入 hadoop bin 目录
./bin/hdfs zkfc -formatZK
如果出现异常情况
需要检查配置文件 是不是写错了。
在 ZK 中也可以看到注册成功
6 JournalNode
在预算好的 JN 节点启动 journalnode
hadoop-daemon.sh start journalnode
按路径检查日志
jps 查看 JournalNode 进程 (应采用 2X +1 生产建议 5 +)
7 启动 HA
只在 NN 1 上操作
格式化HDFS命令
hdfs namenode -format
启动 namenode
hadoop-daemon.sh start namenode
检查日志
访问 NN1
操作 NN 2
nn2 操作同步 nn1 元数据的命令
hdfs namenode -bootstrapStandby
启动 nn2 namenode
hadoop-daemon.sh start namenode
指定 nn2 为主机
hdfs haadmin -transitionToActive --forcemanual nn2
查看验证
关闭hdfs
stop-dfs.sh
zkServer.sh stop
zkServer.sh start
8 HADOOP_HOME 不存在异常
如果出现 HADOOP_HOME 不对情况,需要修改 etc/hadoop/hadoop-env.sh JDK目录为绝对路径
%%%% 如果 ZK 初始化过了就不用再次了
hdfs zkfc -formatZK
nn1 启动 hdfs
start-dfs.sh
nn1 启动 yarn
start-yarn.sh
nn2 启动另一个 ResourceManager
yarn-daemon.sh start resourcemanager
至此 Hadoop 服务以下部署完成。 各节点服务如图
HA 检测
hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2
yarn rmadmin -getServiceState rm1
yarn rmadmin -getServiceState rm2
yarn ha 没成功可能是 ZK 有问题 后面再处理
9 JobHistory
启动 historyserver
mr-jobhistory-daemon.sh start historyserver
停止 historyserver
mr-jobhistory-daemon.sh sop historyserver
jobhistoryserver 端口 19888
启动 JHS 后,在HDFS上/tmp/hadoop-yarn/staging/history 路径下会生成两个文件夹:done和done_intermediate。done文件夹下存放已经完成的 job,done_intermediate 文件夹下存放正在进行的job信息。
今日 完成