Haddop集群安装
2020-02-18 本文已影响0人
TZX_0710
https://pan.baidu.com/s/18tEksNn3TUkMilzNtYUxFQ 提取码:9zvo
环境准备 :192.168.153 node01
192.168.154 node02
192.168.155 node03
Jdk采用1.8版本 此处不介绍安装步骤
上传安装包并且解压到文件目录 进入 解压之后的安装包的etc的目录下面的配置文件里面进行修改
hadoop集群涉及配置文件
普通集群安装
core-site.xml :特定通用hadoop属性配置文件,该配置文件的配置项会覆盖core-default.xml中的相同配置项
hdfs-site.xml: 配置文件的配置项会覆盖hdfs-default.xml中的相同配置项.
Mapred-site.xml: 配置文件的配置项会覆盖mapred-default.xml的相同配置.
Yarn.xml:配置文件的配置项会覆盖yarn-default.xml的相同配置.
slave 配置集群节点的地址
修改 marped-env.sh yarn-env.sh hadoop-env.sh 文件里面的JAVA_HOME路径地址
- 修改core-site.xml
<property>
<!-- 指定HDFS中NameNode的地址 -->
<name>fs.defaultFS</name>
<value>hdfs://node01:9000</value>
</property>
<!--指定hadoop的临时文件目录 运行时产生数据的目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/haddop/full/tmp</value>
</property>
- 修改hdfs.xml
<!--设置dfs的副本数 不设置默认为3-->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!--设置secondary的http地址 端口-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node01:50090</value>
</property>
- 修改 Mapred-site.xml
<property>
<!--指定运行在yarn上-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
- 修改yarn-site.xml
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node01</value>
</property>
<!-- Site specific YARN configuration properties -->
配置profile环境变量
export HADOOP_HOME=/usr/local/hadoop-2.7.7
export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
source /etc/profile
分发文件
scp -r /etc/profile root@node02
scp -r /etc/profile root@node03
采用source命令生效
启动hadoop集群
首次启动初始化 namenode在3个节点分别执行
hdfs namenode -format
进入 sbin目录进行启动hadoop集群
先启动hdfs
./start-dfs.sh
./start-yarn.sh
启动成功 浏览器打开 50070 查案web-ui的地址此处放上2张webui介绍的说明图片
注:在启动完成之后发现一个问题 查看dataNodes上面的dateNode节点 只显示一个,重新格式化了namenode节点等之后也还是只显示一个。最后发现问题,因为我的slaves里面等都是填写的node01、node02在hosts里面配置的别名但是虚拟机的hostname 一直都是local host ,所以在格式化的时候这个地方的地址一直是127.0.0.1 最后我把虚拟机的hostname改成对应的 /etc/hostname 里面配置的 node01 node02 node 03 重启服务器重新启动集群生效
高可用集群安装
采用zokeeper做高可用集群 一旦主节点 宕机、另一备份节点成为主节点
修改配置文件 hadoop-env.sh marped-env.sh 的JAVA_HOME为本地安装的home目录
修改如下涉及的配置文件
- core-site.xml
<!-- 把两个NameNode的地址组装成一个集群mycluster -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.6/data/ha/tmp</value>
</property>
<!-- 指定ZKFC故障自动切换转移 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>node01:2181,node02:2181,node03:2181</value>
</property>
- hdfs-site.xml
<configuration>
<!-- 设置dfs副本数,默认3个 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 完全分布式集群名称 -->
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
<!-- 集群中NameNode节点都有哪些 -->
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>node01:8020</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>node02:8020</value>
</property>
<!-- nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>node01:50070</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>node02:50070</value>
</property>
<!-- 指定NameNode元数据在JournalNode上的存放位置 共享文件夹 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://node01:8485;node02:8485;node03:8485/mycluster</value>
</property>
<!-- 配置隔离机制,即同一时刻只能有一台服务器对外响应 -->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<!-- 使用隔离机制时需要ssh无秘钥登录-->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<!-- 声明journalnode服务器存储目录-->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/opt/haddop/data/ha/jn</value>
</property>
<!-- 关闭权限检查-->
<property>
<name>dfs.permissions.enable</name>
<value>false</value>
</property>
<!-- 访问代理类:client,mycluster,active配置失败自动切换实现方式-->
<property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 配置自动故障转移-->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!--开启webhdfs 否则在Haddop的WebUI浏览器点击某些hdfs文件的时候可能会出现
Path does not exist on HDFS or WebHDFS is disabled.
Please check your path or enable WebHDFS -->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<configuration>
- mapred-site.xml
<!-- 指定mr框架为yarn方式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 指定mr历史服务器主机,端口 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>node01:10020</value>
</property>
<!-- 指定mr历史服务器WebUI主机,端口 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node01:19888</value>
</property>
<!-- 历史服务器的WEB UI上最多显示20000个历史的作业记录信息 -->
<property>
<name>mapreduce.jobhistory.joblist.cache.size</name>
<value>20000</value>
</property>
<!--配置作业运行日志 -->
<property>
<name>mapreduce.jobhistory.done-dir</name>
<value>${yarn.app.mapreduce.am.staging-dir}/history/done</value>
</property>
<property>
<name>mapreduce.jobhistory.intermediate-done-dir</name>
<value>${yarn.app.mapreduce.am.staging-dir}/history/done_intermediate</value>
</property>
<property>
<name>yarn.app.mapreduce.am.staging-dir</name>
<value>/tmp/hadoop-yarn/staging</value>
</property>
</configuration>l
- slave
node01
node02
node03
- yarn-site.xml
<configuration>
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--启用resourcemanager ha-->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!--声明两台resourcemanager的地址-->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>rmCluster</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>node02</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>node03</value>
</property>
<!--指定zookeeper集群的地址-->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>node01:2181,node02:2181,node03:2181</value>
</property>
<!--启用自动恢复-->
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<!--指定resourcemanager的状态信息存储在zookeeper集群-->
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
</configuration>
启动hadoop集群的顺序
- 启动zookeeer集群
- 先启动 3台虚拟机的journalnode服务
hadoop-daemon.sh start journalnode
- 在nn1节点上格式化 hdfs
hdfs namenode -format
- 启动nn1 上的 namenode
hadoop-daemon.sh start namenode
- nn2 同步 nn1 的元数据信息
hdfs namenode -bootstrapStandby
- 启动 nn2 上的namenode
hadoop-daemon.sh start namenode
- 在nn1上启动所有 datenode
hadoop-daemons.sh start datanode
8.启动zkfx 在哪台机器上先启动 哪一台就是master节点
[root@node01 ~]hadoop-daemon.sh start zkfc
[root@node02 ~]hadoop-daemon.sh start zkfc
# 在备机启动
start-yarn.sh
# 在node03节点 启动
yarn-daemon.sh start resourcemanager
node01
node02
node03
注:友情提示 可以直接复制粘贴改就直接改,自己手搓配置可能会出错。