打怪升级之小白的大数据之旅(四十三)<Hadoop运行模式(集群搭建)> (3)

生成公钥私钥脚本# 进入到家目录下,存放我们的脚本 cd ~ # 创建生成key的脚本文件 vim key.sh # 编写脚本文件 #!/bin/bash ssh-keygen -t rsa

公钥拷贝脚本# 进入到家目录下,存放我们的脚本 cd ~ # 创建生成key的脚本文件 vim send_key.sh #!/bin/bash for host in hadoop102 hadoop103 hadoop104 do ssh-copy-id $host done

生成脚本后,使用xsync或者ssh进行分发

xsync -av ~/key.sh send_key.sh hadoopuser@hadoop103:~/ xsync -av ~/key.sh send_key.sh hadoopuser@hadoop104:~/

接着每台服务器都运行一下key.sh和send_key.sh,记住顺序哈,先key.sh再send_key.sh

运行后,最好每台服务器都使用ssh连接测试一下

ssh hadoop102 ssh hadoop103 ssh hadoop104 集群配置 集群配置的规划

配置集群前,我们需要了解的注意点以及集群配置的规划

Hadoo模块|服务器名称hadoop102hadoop103hadoop104
HDFS   NameNode|DataNode   DataNode   SecondaryNameNode|DataNode  
YARN   NodeManager   ResourceManager|NodeManager   NodeManager  

在我的理解看来,集群的最低配置就是三个节点

首先每台服务器都有存储数据的DataNode和进行任务管理的NodeManager

另外NameNode、ResourceManager和SecondaryNameNode都比较耗费资源,它们三个是不能在同一个节点上进行部署的,所以需要分开

它们三个分开还有另外一层意思就是解耦,如果它们至少有两个在同一个节点的话,当该节点异常崩溃,就会导致整个集群崩溃掉

大家注意一下:我在hadoop102 上配置的是NameNode,在hadoop103配置的是ResourceManager。在hadoop104节点上配置的是SecondaryNameNode

集群配置文件

配置集群的主要任务就是配置集群的文件,根据Hadoop的构成,我们会进行如下的配置文件修改:
- 核心配置文件 core-site.xml
- HDFS配置文件 hdfs-site.xml
- YARN配置文件 yarn-site.xml
- MapReduce配置文件 mapred-site.xml

配置文件的路径就在hadoop根目录中的etc/hadoop文件夹下,即/opt/module/hadoop-3.1.3/etc/hadoop

在我们上一章进行单机运行时,Hadoop是通过加载默认配置的文件来工作的,文件就是前面我说的这些,例如: core-default.xml, hdfs-default.xml等

我们可以将xxx-site.xml理解成Java中的重写方法,当我们修改了xxx-site.xml后Hadoop就会直接加载我们修改的这些配置文件,下面我就直接将这些配置文件的常用信息放到下面,大家直接复制到我们的服务器中就好,直接使用vim打开即可

注意一下,我们的配置信息是在 <configuration> 配置信息 </configuration>中,大家粘贴的时候,不要重复复制这个标签

core-site.xml <configuration> <!--指定HDFS中NameNode的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop102:9820</value> </property> <!-- 指定Hadoop运行时产生文件的存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-3.1.3/data</value> </property> <!-- 通过web界面操作hdfs的权限 --> <property> <name>hadoop.http.staticuser.user</name> <value>atguigu</value> </property> <!-- 后面hive的兼容性配置 --> <property> <name>hadoop.proxyuser.atguigu.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.atguigu.groups</name> <value>*</value> </property> </configuration> hdfs-site.xml <configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop104:9868</value> </property> </configuration> yarn-site.xml <configuration> <!-- 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> <!-- 环境变量通过从NodeManagers的容器继承的环境属性,对于mapreduce应用程序,除了默认值 hadoop op_mapred_home应该被添加外。属性值 还有如下--> <property> <name>yarn.nodemanager.env-whitelist</name> <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value> </property> <!-- 解决Yarn在执行程序遇到超出虚拟内存限制,Container被kill --> <property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property> <!-- 后面hive的兼容性配置 --> <property> <name>yarn.scheduler.minimum-allocation-mb</name> <value>512</value> </property> <property> <name>yarn.scheduler.maximum-allocation-mb</name> <value>4096</value> </property> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>4096</value> </property> </configuration> mapred-site.xml <configuration> <!-- 指定MR运行在Yarn上 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>

接下来:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgysss.html