一:集群总体规划
1:hadoop 后台进程运行分布。
![](https://img.haomeiwen.com/i9376366/57ef642eccd8466e.png)
Hadoop 是典型的主从模式。
1: namenode 负责管理: hdfs文件系统中 所有文件的 存储 和分布情况,也就是官方说法:文件的元数据信息。
2: yarn 负责集群的资源管理,如硬件的分配和使用情况的监控。
resourcemanager ----yarn 的老大
nodemanager -----负责运行在 每个 datanode 上 ,并定时向 resourcemanager 汇报 运行情况。
二: hadoop 集群运行的基本 依赖
1:jdk1.8
2: hadoop-2.6.5
3: 创建 hadoop 用户 :
useradd hadoop
passwd --设置密码 (hadoop)
4: 切换到 root 用户 给hadoop 用户 设置 sudo 权限。
su --- 直接切换到 root 用户
vim /etc/sudoers --- 编辑该文件
简单处理 直接 添加下面内容 (和 root 一样)
hadoop ALL=(ALL) ALL
三:配置 JAVA_HOME 和解压 hadoop
1:在 /home/hadoop 下创建soft 文件夹
mkdir soft
这里选择将jdk安装在soft 文件里面(推荐在 /usr/local)
解压 jdk 和 hadoop:
tar -zxvf jdk-1.8uxxx.tar.gz
tar -zxvf hadoop-2.6.5.tar.gz
将 jdk安装目录 该 名 为 jdk1.8
mv jdk-1.8uxxx jdk1.8
2: 配置 JAVA_HOME: (HADOOP_HOME 选择配置)
sudo vim /etc/profile ---在最后 追加
export JAVA_HOME=/home/hadoop/soft/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
保存退出 并执行 :
source /etc/profile
四:设置 hosts 文件配置 ip - 主机名映射 以及防火墙设置
1: 四台虚拟机:
192.168.86.30 --node1
192.168.86.31 --node2
192.168.86.32 --node3
192.168.86.33 --node4
vim /etc/hosts
添加:
192.168.86.30 node1(后面的一样)
2:关闭防火墙(简单处理)
firewall-cmd --state ----查看防火墙状态
sudo systemctl stop firewalld --临时关闭
sudo systemctl disable firewalld ---禁止开机启动
五: hadoop 配置文件配置 (所有的参数 在官方文档都有)
0: 设置 JAVA_HOME
hadoop-env.sh :
export JAVA_HOME=/home/hadoop/soft/jdk1.8
1: 核心文件 core-site.xml :
主要配置 namenode IP 和端口 (fs.defaultFS)
hadoop 工作目录 (hadoop.tmp.dir)
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
<!--工作目录在 namenode format 时会自动创建-->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadpdata</value>
</property>
2:文件系统 hdfs-site.xml 配置(可选)
这里主要配置的是 文件的 副本数 默认是3 (dfs.replication)
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
3: 配置 mapreduce 进程运行的参数
主要是配置 运作的资源平台 yarn 意思是 mapreduce 进程运行的硬件资源交给 yarn 来负责
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
4:配置yarn 集群 文件 yarn-site.xml
<configuration>
<!-- 设置资源管理器的地址,这里设置和 namenode 在一台机器 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
</property>
<!--设置mapreduce 取数据的策略-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
六:启动
1:启动前的准备工作
初始话或者叫格式话 namenode 。目的就是问了产生分布式文件系统运行时必要的文件或文件目录。hdfs 文件系统是建立在 linux 主机的,最后的文件落地也在linux 目录中。
将上面的 所有配置文件(/etc/profile /etc/hosts hadoop 的配置文件)和jdk ,Hadoop 都 复制一份到集群的其他节点
jdk 和 hadoop 要复制在 相同的目录下(/home/hadoop/soft)也就是集群中的每个节点的配置都完全一样
如果配置了HADOOP_HOME 的话 直接 运行:
hadoop namenode -format
否则,进到 bin 目录:
./hadoop namenode -format
2: 分别启动 namenode , datenode , resourcemanager
这里也许会有疑问 为什么不 直接 运行 start-all.sh (start-dfs.sh 和 start-yarn.sh) 目的是为了 清楚的演示 集群 启动的 过程。
2.1 格式化成功后,启动 namanode
启动 脚本在 sbin 下:
./hadoop-daemon.sh start namenode
## jps 可以查看进程
启动datanode :
注意要做 对应的datanode 节点中启动:
如 启动 node2
./hadoop-daemon.sh start datanode
启动成功后可以在 namenode 的 web 界面中 查看到 该 datanode
192.168.86.30:50070 (版本不同可能地址不同,以官方为准 3.0+的是 9870)
在node3和node4上启动 datanode
./hadoop-daemon.sh start datanode
datanode 启动后会根据配置core-site.xml 中的配置(fs.defaultFS) 去找到 namenode (底层通信暂不明白,表面上理解是这样的,可以理解为 微服务去注册中心注册服务)
2.2 启动yarn
./hadoop-daemon.sh start resourcemanager
到次hadoop 文件系统搭建和启动完成了。
七:利用 start-all.sh 或者 start-dfs.sh 和 start-yarn.sh 启动集群
start-all.sh 会去 slaves (和core-site.xml 等文件同级) 文件读取 从节点数 并 远程 ssh 登陆 去启动,所以 这里 会 配置 slaves 文件 和 ssh 的 免密登陆。
1:slaves 加入 datanode 节点
node2
node3
node4
2:ssh 免密登陆
这里一般只配置 namenode 节点 到 其他 datanode 的单项 ssh 免密登陆,也就是说 :
node1--->node2
node1--->node3
node1--->node4
因为一般集群启动都在在namenode上启动。
node-->node2 的ssh 免密:
ssh-keygen
一直回车就ok
ssh-copy-id node2
这里会提示 让你输入 node2 的登陆秘密 (如hadoop 用户的登陆密码 )。
3:上面配置完成后 启动 集群
./start-all.sh
在namenode上就会 有 一下进程运行:
6368 SecondaryNameNode
7317 Jps
6509 ResourceManager
6190 NameNode
在data node 上:
3237 NodeManager
3511 Jps
3134 DataNode
到此完成所有工作(该集群只用于学习和开发,不适用于生产环境)
网友评论