Hadoop集群管理
Hadoop 2.7.1 单机与集群部署指南
一、概述
-
官方文档:
-
环境信息:
- 操作系统: CentOS 7
- Hadoop版本: 2.7.1
- Java版本: 推荐
java-1.7.0-openjdk-devel
二、架构说明
IP地址 | 主机名 | 服务角色 |
---|---|---|
115.231.182.239 | master | NameNode, ResourceManager |
115.231.182.240 | node1 | DataNode, NodeManager |
115.231.182.241 | node2 | DataNode, NodeManager |
- Hadoop安装目录:
/www/hadoop
三、配置步骤
1. 配置主机名与网络
修改 /etc/hosts
在所有节点上编辑 /etc/hosts
文件,添加主机映射:
vi /etc/hosts
内容:
115.231.182.239 master115.231.182.240 node1115.231.182.241 node2
配置网络信息
- 编辑
/etc/sysconfig/network
和/etc/hostname
,确保主机名正确。
2. 配置SSH免验证登录
Master节点操作
- 生成SSH密钥:
Terminal window ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa - 合并公钥到
authorized_keys
:Terminal window cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys - 分发公钥到Node节点:
Terminal window scp ~/.ssh/id_dsa.pub node1:~scp ~/.ssh/id_dsa.pub node2:~
Node节点操作
在每个Node节点上执行:
mkdir -p ~/.sshcat ~/id_dsa.pub >> ~/.ssh/authorized_keyschmod 600 ~/.ssh/authorized_keys
3. 下载与安装Hadoop
Master节点操作
-
下载Hadoop:
Terminal window cd /wwwwget -c http://mirrors.noc.im/apache/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gztar xvzf hadoop-2.7.2.tar.gzmv hadoop-2.7.2/ hadoop -
设置环境变量: 编辑
/etc/profile
,添加:Terminal window export HADOOP_PREFIX=/www/hadoopsource /etc/profile -
创建数据目录:
Terminal window mkdir -p /www/hadoop-data/tmpmkdir -p /www/hadoop-data/dfs/datamkdir -p /www/hadoop-data/dfs/name -
配置Hadoop核心文件: 进入配置目录:
Terminal window cd /www/hadoop/etc/hadoop-
core-site.xml:
<configuration><property><name>hadoop.tmp.dir</name><value>/www/hadoop-data/tmp</value><description>A base for other temporary directories.</description></property><property><name>fs.defaultFS</name><value>hdfs://master:9000</value></property><property><name>io.file.buffer.size</name><value>4096</value></property></configuration> -
hdfs-site.xml:
<configuration><property><name>dfs.nameservices</name><value>hadoop-cluster1</value></property><property><name>dfs.namenode.secondary.http-address</name><value>master:50090</value></property><property><name>dfs.namenode.name.dir</name><value>file:///www/hadoop-data/dfs/name</value></property><property><name>dfs.datanode.data.dir</name><value>file:///www/hadoop-data/dfs/data</value></property><property><name>dfs.replication</name><value>2</value></property><property><name>dfs.webhdfs.enabled</name><value>true</value></property></configuration> -
mapred-site.xml:
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property><property><name>mapreduce.jobtracker.http.address</name><value>master:50030</value></property><property><name>mapreduce.jobhistory.address</name><value>master:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>master:19888</value></property></configuration> -
yarn-site.xml:
<configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.resourcemanager.address</name><value>master:8032</value></property><property><name>yarn.resourcemanager.scheduler.address</name><value>master:8030</value></property><property><name>yarn.resourcemanager.resource-tracker.address</name><value>master:8031</value></property><property><name>yarn.resourcemanager.admin.address</name><value>master:8033</value></property><property><name>yarn.resourcemanager.webapp.address</name><value>master:8088</value></property></configuration> -
slaves:
node1node2
-
-
配置JAVA_HOME: 编辑
hadoop-env.sh
和yarn-env.sh
,添加:Terminal window export JAVA_HOME=/usr/lib/jvm/java/
4. 启动与关闭Hadoop
启动Hadoop集群
在Master节点执行:
/www/hadoop/bin/hdfs namenode -format/www/hadoop/sbin/start-all.sh
关闭Hadoop集群
在Master节点执行:
/www/hadoop/sbin/stop-all.sh
单机模式启动
若需以单机模式运行,修改配置文件中的 master
为 localhost
,并仅启动DFS服务:
/www/hadoop/sbin/start-dfs.sh
5. 监控界面
- HDFS Web UI: http://115.231.182.239:50070/
- YARN ResourceManager UI: http://115.231.182.239:8088/cluster
Hadoop集群节点管理指南
一、增加节点流程
1. 查看集群节点状态
hdfs dfsadmin -report
2. 配置新增节点
- Master节点操作:
Terminal window vi etc/hadoop/slaves # 添加新节点名hadoop-1
3. 新节点服务启动
# 在hadoop-1节点执行hdfs --daemon start datanode # 启动DataNodeyarn --daemon start nodemanager # 启动NodeManager
4. 刷新集群配置
# Master节点执行hdfs dfsadmin -refreshNodes # 刷新DataNodeyarn rmadmin -refreshNodes # 刷新NodeManager
5. 验证新增节点
hdfs dfsadmin -report
二、下线节点流程
1. 下线DataNode
-
配置排除列表:
<!-- 修改hdfs-site.xml --><property><name>dfs.hosts.exclude</name><value>/path/to/dfshosts.exclude</value></property>Terminal window echo "hadoop-2" >> dfshosts.excludehdfs dfsadmin -refreshNodes
2. 下线NodeManager
-
配置YARN排除列表:
<!-- 修改yarn-site.xml --><property><name>yarn.resourcemanager.nodes.exclude-path</name><value>/path/to/dfshosts.exclude</value></property>Terminal window echo "hadoop-2" >> dfshosts.excludeyarn rmadmin -refreshNodes
三、磁盘扩容流程
1. 准备工作
- 下线目标节点:
Terminal window hdfs --daemon stop datanode # 在目标节点执行
2. 磁盘操作
# 分区与挂载fdisk /dev/sdb # 创建新分区mkfs.ext4 /dev/sdb1mount /dev/sdb1 /data2 # 挂载到新目录
3. 修改存储路径
<!-- 修改hdfs-site.xml --><property> <name>dfs.datanode.data.dir</name> <value>/data1,/data2</value></property>
4. 重启服务
hdfs --daemon start datanode # 在目标节点重启
5. 验证扩容
hdfs dfsadmin -report
时区配置
主机的时间设置是没有问题,都是设置为 GTM+8 而主机时间实际是 14点 相差8个小时. 可以猜测 是时区设置的问题 再进一步调查 发现java 是通过读取环境变量的时区信息来确定时区的,如果环境变量中没有设置TZ 变量, 那么java 就会读取UTC 时间
vi hadoop-env.sh#最后增加一行export TZ="Asia/Shanghai"