![0481a96e386e2452be59becd54345e65.png](https://i-blog.csdnimg.cn/blog_migrate/8428e0e3d3e8735ea5c5934683263410.jpeg)
在准备好3台虚拟机,并安装好jdk和hadoop后,我们开始进行集群配置,首先要做一个集群配置的规划,也就是将不同的角色放到不同的虚拟机上。
hadoop的三个核心部分
- Hdfs 数据存储
- Yarn 资源调度
- MapReduce 计算框架
这里我们要规划分配的是Hdfs和Yarn的角色。
Hdfs的结构
![c19123ac6679a869d12bc589f8eb0752.png](https://i-blog.csdnimg.cn/blog_migrate/31fd30baf87b3961cc8e477586fe8a07.png)
1.NameNode (数据的索引) 主角色 名字节点 统筹信息,统筹数据存储的工作,本身不存储数据
2.DataNode (数据的本身) 数据节点 以块为单位存储数据(Block),默认128M一个块
3.Secondary NameNode(2NN)用来监控HDFS状态的辅助后台程序(辅助NameNode)
3台虚拟机中我们要选一台存放NameNode,另一台放2NN,并且每一台虚拟机都存放一个DataNode。
Yarn的结构
![359131cde1fd2b13b49823852e7bea6e.png](https://i-blog.csdnimg.cn/blog_migrate/6ccfc13019b4d48d76bc623941e12e27.png)
1.Resource Manager:负责统筹管理集群的计算资源,响应资源请求,协调NodeManager。
2.Node Manager:负责管理物理机器上与容器的协调。
3.Application Master :做应用内的资源协调和申请。
4.container:对任务运行环境的抽象,封装了CPU、内存等多维资源及环境变量、启动命令等任务运行相关信息。
3台虚拟机中选择一台存放Resource Manager,每台虚拟机存放一个Node Manager。
集群部署规划
生产环境中,一般NN、RN、2NN是不会和DN、NM混搭的,但是对于个人PC端来说,16G内存无法支撑6台虚拟机,因此采取3台虚拟机混搭的模式。
![fc874ff7eb219f68babb0bf75304239d.png](https://i-blog.csdnimg.cn/blog_migrate/02d5b33e9bed9538531d7ff38124ca46.png)
集群配置
在hadoop100上进行核心文件配置
为了便捷,修改文件我们使用Notepad++,通过Notepad++的NppFTP插件连接Linux
选择插件菜单栏—NppFTP—show NppFTP Window
![056f8ee3e938e3f6ece64d73e9dd4510.png](https://i-blog.csdnimg.cn/blog_migrate/236b0686acf8039f51011ccea203202f.jpeg)
点击设置—Profile settings
![e173283402781ab70be92765396e8734.png](https://i-blog.csdnimg.cn/blog_migrate/4c80e128b69e3f8f0809cdb73ea34772.png)
设置信息
![eb67f4a292f05845f800758714e14469.png](https://i-blog.csdnimg.cn/blog_migrate/84b38331cec04d02a0180b8af85ac9bd.jpeg)
进入hadoop路径:/opt/module/hadoop-2.7.1/etc/hadoop
![98d0246dcb0a0aaf522d5c278d2d76e5.png](https://i-blog.csdnimg.cn/blog_migrate/49d0859ed9d48104391f27390e365b16.jpeg)
第一步:
我们先修改以下3个文件,添加JAVA_HOME
hadoop-env.sh
mapred-env.sh
yarn-env.sh
![c653e8a1659e3ef1534cb164c1f52e97.png](https://i-blog.csdnimg.cn/blog_migrate/dc6c51d7e65805fac54dee314237c1bb.jpeg)
![9f768998c6c518f3ad1479547b21a9b2.png](https://i-blog.csdnimg.cn/blog_migrate/2dae2895760f75e8d0c8f7622def9396.jpeg)
![4a4f845054ca9c371130bcc7df1a3b06.png](https://i-blog.csdnimg.cn/blog_migrate/6f8d1cc6fbbdbf33f251678bb3ed3e00.jpeg)
第二步:
1.核心配置文件:修改core-site.xml文件
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop101:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
![6950eceaa1810823363733202ccddb75.png](https://i-blog.csdnimg.cn/blog_migrate/f1368264cb54937606c7d3e0bffc67a3.jpeg)
2.HDFS配置文件:修改hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop102:50090</value>
</property>
![3156f160a71e1d00cf28bf9e61ef79ed.png](https://i-blog.csdnimg.cn/blog_migrate/7afc639448871eb528afb05019e6b22a.jpeg)
3.YARN配置文件:修改yarn-site.xml
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>
![fba0dc7aee62cf56110b50eb2ebe835e.png](https://i-blog.csdnimg.cn/blog_migrate/3c89ce35814559329f1198666ec0f4c6.jpeg)
4.MapReduce配置文件:修改mapred-site.xml
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
![27818955ee61c30d84209bb27a303eee.png](https://i-blog.csdnimg.cn/blog_migrate/8fb2a3a4c35c4716dca07d917c4af614.jpeg)
第三步:
分发配置好的hadoop文件
Xshell远程连接hadoop100,进入指定路径
指令:cd /opt/module/hadoop-2.7.2
指令:xsync etc
![bead8d066c0598fe8630c95d7ea6c2df.png](https://i-blog.csdnimg.cn/blog_migrate/3047cd89da06d977642bda55fd6c97fd.jpeg)
集群单点启动
用Xshell连接hadoop101
【1】格式化NameNode
如果集群是第一次启动,需要格式化NameNode
指令:cd /opt/module/hadoop-2.7.2
指令:hdfs namenode -format
![8ca49665ef9cf1fb321d24f3e965fec2.png](https://i-blog.csdnimg.cn/blog_migrate/3eef55efff981b5175588b21723aa8fb.jpeg)
出现sucessfully formatted 说明成功了
【2】在hadoop101上启动NameNode、DataNode
指令:hadoop-daemon.sh start namenode
指令:hadoop-daemon.sh start datanode
![c9431dd7b93d9b647b77548721ccb891.png](https://i-blog.csdnimg.cn/blog_migrate/6f4ea52b592014242cdb9cdf143929b7.png)
【3】在hadoop102上启动DataNode、SecondaryNameNode
指令:hadoop-daemon.sh start datanode
指令:hadoop-daemon.sh start secondarynamenode
![7a4fefa05b5d97b9f55a8bf783c24b9f.png](https://i-blog.csdnimg.cn/blog_migrate/fe61cae963f2e6d6dddd03a81b6d819f.png)
【4】在hadoop103上启动DataNode
指令:hadoop-daemon.sh start datanode
![705c363c6be870d5d1f1d3f150a98080.png](https://i-blog.csdnimg.cn/blog_migrate/560702b738ee1d9184ec164f183e09da.png)
所有窗口输入jps查看
![dc0db4f8a863dddc38872933592fafc3.png](https://i-blog.csdnimg.cn/blog_migrate/9d397f9e7048f2834c0c91a63d152365.png)
hadoop101
![b0dcb76bebc3e8798b92fbab027c21b2.png](https://i-blog.csdnimg.cn/blog_migrate/253bf17378338388d2b9f93fed2d60b7.png)
hadoop102
![b39ab9a84793cf8453891897acb1118c.png](https://i-blog.csdnimg.cn/blog_migrate/2b775fa68cf42e64b951c840d273d4d3.png)
hadoop103
![40a503a9168a11463f6eebb7d1d321bd.png](https://i-blog.csdnimg.cn/blog_migrate/e6ecaf00d6181fc13769ef41ea92c387.png)
通过web查看hadoop状态
在本机windows 修改C:WindowsSystem32driversetc的host文件(否则无法通过主机名访问)
把以下内容加进去
192.168.111.128 hadoop100
192.168.111.129 hadoop101
192.168.111.130 hadoop102
192.168.111.131 hadoop103
![dc4da797401144d4fae3b3ae698f0718.png](https://i-blog.csdnimg.cn/blog_migrate/76a20c2b60240d02b57d624bb634f8e9.jpeg)
设置完成后,打开浏览器输入hadoop101:50070
![47b3a387f39518830c262d8e3eacb6d2.png](https://i-blog.csdnimg.cn/blog_migrate/c9d2993ae18d170a55e249529176aa35.jpeg)
看到3个datanode 说明启动成功