Hadoop集群配置
配置文件 | 功能 | hadoop.env.sh | 配置Hadoop运行所需的环境变量 | yarn.env.sh | 配置Yarn运行所需的环境变量 | core-site.xml | Hadoop核心全局配置文件 | hdfs-site.xml | HDFS配置文件,继承core-site.xml配置文件 | mapred-site.xml | MapReduce配置文件,继承core-site.xml配置文件 | yarn-site.xml | Yarn配置文件,继承core-site.xml配置文件 |
Hadoop节点对应进程
hadoop01 | hadoop02 | hadoop03 |
---|
NodeManager | NodeManager | NodeManager | NameNode | NameNode | | DataNode | DataNode | DataNode | JournalNode | JournalNode | JournalNode | QuorumPeerMain | QuorumPeerMain | QuorumPeerMain | ResourceManager | ResourceManager | | DFSZKFailoverController | DFSZKFailoverController | |
Hadoop配置
????????一、配置虚拟机
? ? ? ? ? ? ? ? 1.新建虚拟机:hadoop01 hadoop02 hadoop03
? ? ? ? ? ? ? ? 2.配置host映射
192.168.26.137 hadoop01
192.168.26.133 hadoop02
192.168.26.134 hadoop03
? ? ? ? ? ? ? ?3.配置三台虚拟机间免密登录
? ? ? ? ? ? ? ? (1)生成密钥
ssh-keygen
? ? ? ? ? ? ? ? (2)拷贝密钥到其他节点
ssh-copy-id hadoop01
ssh-copy-id hadoop02
ssh-copy-id hadoop03
? ? ? ? ? ? ? ? (3)验证是否拷贝成功
ssh hadoop01
ssh hadoop02
shh hadoop03
? ? ? ? 二、Hadoop安装
? ? ? ? ? ? ? ? 1.下载并上传Hadoop安装包
? ? ? ? ? ? ? ? 2.解压Hadoop安装包
tar -zxvf hadoop-2.4.1.tar.gz
? ? ? ? ? ? ? ? 3.将解压后的文件移动到指定文件夹下
mv hadoop-2.4.1 /export/software/
? ? ? ? ? ? ? ? 4.修改相关配置
? ? ? ? ? ? ? ? ????????(1)修改core-site.xml
<configuration>
<!--指定hdfs连接地址,集群模式(高可用)-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://cluster</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/export/software/hadoop-2.4.1/tmp</value>
</property>
<property>
<name>hadoop.native.lib</name>
<value>false</value>
</property>
<!-- 指定ZooKeeper集群的地址和端口。注意,数量一定是奇数,且不少于三个节点-->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>
</configuration>
? ? ? ? ? ? ? ? ? ? ? ? (2)修改hdfs-site.xml
<configuration>
<!--指定HDFS副本的数量,不能超过机器节点数-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 为namenode集群定义一个services name -->
<property>
<name>dfs.nameservices</name>
<value>cluster</value>
</property>
<!-- nameservice 包含哪些namenode,为各个namenode起名 -->
<property>
<name>dfs.ha.namenodes.cluster</name>
<value>nn01,nn02</value>
</property>
<!-- 名为nn01的namenode的rpc地址和端口号,rpc用来和datanode通讯 -->
<property>
<name>dfs.namenode.rpc-address.cluster.nn01</name>
<value>hadoop01:9000</value>
</property>
<!--名为nn01的namenode的http地址和端口号,用来和web客户端通讯 -->
<property>
<name>dfs.namenode.http-address.cluster.nn01</name>
<value>hadoop01:50070</value>
</property>
<!-- 名为nn02的namenode的rpc地址和端口号,rpc用来和datanode通讯 -->
<property>
<name>dfs.namenode.rpc-address.cluster.nn02</name>
<value>hadoop02:9000</value>
</property>
<!--名为nn02的namenode的http地址和端口号,用来和web客户端通讯 -->
<property>
<name>dfs.namenode.http-address.cluster.nn02</name>
<value>hadoop02:50070</value>
</property>
<!-- namenode间用于共享编辑日志的journal节点列表 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/cluster</value>
</property>
<!-- journalnode 上用于存放edits日志的目录 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/export/data/hadoop/journaldata</value>
</property>
<!-- 指定该集群出现故障时,是否自动切换到另一台namenode -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置失败自动切换实现方式 -->
<property>
<name>dfs.client.failover.proxy.provider.cluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 一旦需要NameNode切换,使用ssh方式进行操作 -->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence
shell(/bin/true)
</value>
</property>
<!-- 如果使用ssh进行故障切换,使用ssh通信时用的密钥存储的位置 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<!-- connect-timeout超时时间 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/export/software/hadoop-2.4.1/tmp/dfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/export/software/hadoop-2.4.1/tmp/dfs/data</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
? ? ? ? ? ? ? ? ? ? ? ? (3)修改yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- 启用Resource Manager HA高可用性 -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- NodeManager上运行的附属服务,默认是mapreduce_shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定resourcemanager的名字 -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<!-- 使用了2个resourcemanager,分别指定Resourcemanager的地址 -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!-- 指定rm1的地址 -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>hadoop01</value>
</property>
<!-- 指定rm2的地址 -->
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>hadoop02</value>
</property>
<!-- 指定zookeeper集群机器 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>
</configuration>
? ? ? ? ? ? ? ? ? ? ? ? ?(4)修改mapred-site.xml(该文件不存在,需要手动创建)
<configuration>
<!-- 采用yarn作为mapreduce的资源调度框架 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
? ? ? ? ? ? ? ? ? ? ? ? (5)修改slaves文件
hadoop01
hadoop02
hadoop03
? ? ? ? ? ? ? ? ? ? ? ? (6)修改hadoop-env.sh和yarn-env.sh文件,指定jdk的地址
export JAVA_HOME=/export/software/jdk1.8.0_161
? ? ? ? ? ? ? ? ? ? ? ? (7)配置环境变量
vi /etc/profile
export HADOOP_HOME=/export/software/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
? ? ? ? ? ? ? ? ? ? ? ? (8)将文件复制到hadoop02和hadoop03上
scp -r /export/software/hadoop-2.4.1 hadoop02:/export/software/hadoop-2.4.1/
scp -r /export/software/hadoop-2.4.1 hadoop03:/export/software/hadoop-2.4.1/
? ? ? ? 三、Hadoop启动
? ? ? ? ? ? ? ? 1.启动journalnode(三台虚拟机都需要启动)
hadoop-daemon.sh start journalnode
? ? ? ? ? ? ? ? 2.格式化
hadoop namenode -format
hdfs zkfc -formatZK
????????????????3.将hadoop文件夹下的tmp文件传到hadoop02
scp -r /export/software/hadoop-2.4.1/tmp hadoop02:/export/software/hadoop-2.4.1/
? ? ? ? ? ? ? ? 4.启动Hadoop
start-all.sh
? ? ? ? ? ? ? ? 5.查看进程

?
?
?????????????????6.测试namenode高可用
????????(1)在hadoop-01上kill掉namenode进程,然后通过浏览器查看hadoop-02的状态,发现状态变为active,说明高可用测试成功 ????????(2)重新启动hadoop-01的namenode进程,sh start-dfs.sh,浏览器访问hadoop-01,此时hadoop-01的状态为standby
|