HDFS
完全分布式
1
整体步骤
-
准备工作
- 修改每台机器主机名(hostname)
- 修改每台机器/etc/hosts 文件
- 配置 ssh,实现无密码登录
2. 配置工作
- 修改hadoop-env.sh 和 yarn-env.sh 文件
- 配置 core-site.xml
- 配置 hdfs-site.xml
- 配置 mapred-site.xml
- 配置 yarn-site.xml
- 配置 slaves 文件
基于三台虚机完成搭建Hadoop 的安装版本为 2.9.2
2 配置过程详解
2.1 配置前提说明
2.1.1 当前已有环境
这次安装是基于的伪分布式文件系统搭建基础上进行配置。前面我搭建
HDFS只在一台机器上搭建,不知道的可以去看一下Hadoop的安装
- 三台虚拟机都已经完成的步骤
- 网络配置
- 主机名配置
- 主机域名映射
- 防火墙和selinux关闭
- ssh免密
- 安装JDK
- node00上完成的配置
- 配置了hadoop环境变量
- hdfs配置
2.1.2
准备工作
检查以上配置是否完成
- 关掉之前的HDFS服务(本教程之前是在node00上配置,此处也在node00上关闭)
stop-dfs.sh
- 清除之前伪分布式系统留下的数据(node03机器上)
清除 /opt/software/hadoop/hdfs/ 目录下 name 、 data 、 tmp 下的数据
cd /opt/software/hadoop/hdfs/name/rm -rf current/cd /opt/software/hadoop/hdfs/data/rm -rf current/cd /opt/software/hadoop/hdfs/tmp/rm -rf dfs/
2.2 hadoop-env.sh
- 此处无需配置保持配置不变
原来的配置是修改里面的 JAVA_HOME 值和 HADOOP_CONF_DIR 的值,并非新增
配置值
export JAVA_HOME=/usr/local/java/jdk1.8
export HADOOP_CONF_DIR=/opt/software/hadoop/hadoop-2.9.2/etc/hadoop
2.3 yarn-env.sh
此配置是新增
JAVA_HOME
值。
找到
# export JAVA_HOME=/home/y/libexec/jdk1.6.0/
,在这行下添加
JAVA_HOME
配置
cd /opt/software/hadoop/hadoop-2.9.2/etc/hadoop/vi yarn-env.sh
# 添加以下配置export JAVA_HOME = /usr/local/java/jdk1.8
2.4 core-site.xml
- 此配置需要把文件系统节点改成node00
- fs.defaultFS表示指定集群的文件系统类型是分布式文件系统(HDFS),datanode心跳发送到 namenode的地址
- hadoop.tmp.dir表示hadoop临时文件目录
<property><name>fs.defaultFS</name><value>hdfs://node00:9000</value></property><property><name>hadoop.tmp.dir</name><value>/opt/software/hadoop/hdfs/tmp</value></property>
2.5 hdfs-site.xml
- dfs.replication原本配置是1,修改为3,三副本策略,表示副本数是3
- dfs.name.dir和dfs.data.dir配置不变
- dfs.datanode.max.locked.memory配置添加,开启缓存,配置值根据自己机器情况配置
- dfs.permissions配置添加,值配置false,不开启文件权限
cd /opt/software/hadoop/hadoop-2.9.2/etc/hadoop/vi hdfs-site.xml
<property><name>dfs.replication</name><value>3</value></property><property><name>dfs.namenode.name.dir</name><value>file:/opt/software/hadoop/hdfs/name</value></property><property><name>dfs.datanode.data.dir</name><value>file:/opt/software/hadoop/hdfs/data</value></property><property><name>dfs.datanode.max.locked.memory</name><value>65536</value></property><property><name>dfs.permissions</name><value>false</value></property>
dfs.datanode.max.locked.memory为什么value是65536?
不一定是 65536 ,需要根据自己机器的实际情况确定使用 ulimit -l 参数查询,得到的数值是 64 ,表示是 64K 大小value 是字节数( Byte ),那么 64*1024=65536 Byte
2.5 mapred-site.xml
需要把
mapred-site.xml.template
拷贝成
mapred-site.xml
文件进行配置
在
configuration
标签中间添加以下配置
mapreduce.framework.name
指定资源分配使用
yarn
<name>mapreduce.framework.name</name><value>yarn</value>
2.6 yarn-site.xml
在
configuration
标签中间添加以下配置
- yarn.resourcemanager.hostname:yarn相关资源服务器的主机名,使用node00
- yarn.nodemanager.aux-services和MapReduce计算相关
- yarn.nodemanager.vmem-check-enabled 关闭虚拟内存检查
cd /opt/software/hadoop/hadoop-2.9.2/etc/hadoop/vi yarn-site.xml
<property><name>yarn.resourcemanager.hostname</name><value>node01</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.nodemanager.vmem-check-enabled</name><value>false</value></property>
2.7 slaves
配置
3
台机器主机名,此配置表示三台机器都作为
DataNode
2.8
同步配置信息
在
node01和node02
上创建
/opt/software
目录
cd /opt/mkdir software
把 node00 上的配置同步到 node01 和 node02使用 scp 命令进行同步
cd /opt/software/scp -r hadoop/ node01: $PWDscp -r hadoop/ node02: $PWD
3
启动集群
3.1
格式化
在
node01
上格式化
hdfs namenode -format
3.2
启动集群
不需要
3
台机器都启动,只需要在
node00
上启动
start-dfs.sh
3.3
查看启动情况
- node00上查看是否有3个进程启动
- jpsnode01、node02上分别有1个进程
- 访问web管理台
url : http://虚拟主机ip:50070/
3.4
上传文件测试
创建目录
hdfs dfs -mkdir /test
上传文件
# 上传文件到 node01cd /opt/mkdir testDatacd testData/mkdir hdfscd hdfsrz # 上传 hadoop-2.9.2.tar.gz# 把 hadoop-2.9.2.tar.gz 上传到分布式文件系统hdfs dfs -put hadoop-2.9.2.tar.gz /test
文件上传成功以后检查
datanode
节点情况
3.5
配置环境变量
- 之前只在node00上配置了hadoop环境变量,现在需要在node01和node02上添加hadoop环境变 量
- 在node01和node02机器的/etc/profile环境变量中添加hadoop配置
vi /etc/profileexport HADOOP_HOME = /usr/local/hadoop/hadoop-2.9.2export PATH = ${PATH} : ${HADOOP_HOME} /bin: ${HADOOP_HOME} /sbin
- 添加配置以后记得加载配置文件,使得配置文件生效
source /etc/profile