前言
上回说到安装了jdk和hadoop,接下来我们要真正的搭建一个集群跑一跑!
集群搭建方案
-
直接上图:
-
准备3台客户机(关闭防火墙,修改主机名称,这个步骤上上回已经处理了,好像忘记修改主机名称了,这次搞它一下!)
-
克隆虚拟机192.168.2.132,192.168.2.133 这块大家自行克隆
-
配置ip(192.168.2.132,192.168.2.133 操作一致)
cd /etc/sysconfig/network-scripts/ #编辑文件 vim ifcfg-ens33 #编辑ip IPADDR=192.168.2.132 #保存 :wq #重启网卡 systemctl restart network -
配置host(192.168.2.132,192.168.2.133 操作一致)
#配置hostName命令 hostnamectl set-hostname hadoop131 #查看是否配置成功 hostname #编辑host文件 vim /etc/hosts #host 192.168.2.131 hadoop131 -
安装jdk,hadoop(这个步骤上回已经搞定了)
-
配置环境变量(这个步骤上回已经搞定了)
-
配置ssh
-
ssh免密登陆,可以使hadoop131,hadoop132,hadoop133直连互通。原理如下:
-
配置操作如下:
#生成公钥私钥 ssh-keygen -t rsa #复制到另外两个节点,自己也要复制 ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop131 ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop132 ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop133 #测试 ssh hadoop132#以上操作分别在hadoop131,hadoop132,hadoop133都操作一遍 -
群发shell脚本
-
循环复制文件到所有节点的相同目录下,我们需要用到Rsync命令原始拷贝处理:
rsync –rvl [原路径] [目标用户@目标服务器:目标路径] -
shell脚本如下:命名xsync,放到/usr/local/bin目录下即可。
#!/bin/bash pcount=$# if((pcount==0)); then echo no args; exit; fi p1=$1 fname=`basename $p1` echo fname=$fname pdir=`cd -P $(dirname $p1); pwd` echo pdir=$pdir user=`whoami` for((host=132; host<134; host++)); do echo --------------- hadoop$host ---------------- rsync -rvl $pdir/$fname $user@hadoop$host:$pdir done -
配置集群文件,暂时照着我都配置一下,以后咱详谈这些配置信息:
-
先说一下所有配置文件的位置,如下图:都在这里哈!
-
core配置文件 core-site.xml
<configuration> <!-- 指定hdfs中NameNode的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop131:9000</value> </property> <!-- 指定Hadoop运行时产生文件的存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-2.7.7/data/tmp</value> </property> <!-- 当前用户全设置成root --> <property> <name>hadoop.http.staticuser.user</name> <value>root</value> </property> <!-- 不开启权限检查 --> <property> <name>dfs.permissions.enabled</name> <value>false</value> </property> </configuration> -
hdfs配置文件 hadoop-env.sh和hdfs-site.xml
-
hadoop-env.sh
#配置jdk export JAVA_HOME=/opt/module/jdk1.8.0_181 -
hdfs-site.xml
<configuration> <!-- 配置副本个数 --> <property> <name>dfs.replication</name> <value>3</value> </property> <!-- 辅助名称节点主机配置 --> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop133:50090</value> </property> <!-- web访问地址配置 --> <property> <name>dfs.http.address</name> <value>0.0.0.0:50070</value> </property> </configuration> -
yarn配置文件yarn-env.sh和yarn-site.xml文件
-
yarn-env.sh
#配置jdk JAVA_HOME=/opt/module/jdk1.8.0_181 -
yarn-site.xml
<configuration> <!--reduce获取数据方式--> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!--资源管理器的地址--> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop132</value> </property> <!--日志聚集功能--> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!--日志保留7天--> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property> <!--可不配置,内存不够不可检查--> <property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property> </configuration> -
mapReduce配置文件mapred-env.sh和mapred-site.xml
-
mapred-env.sh
#配置jdk export JAVA_HOME=/opt/module/jdk1.8.0_181 -
mapred-site.xml
<configuration> <!--指定mapReduce运行在yarn上--> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <!--历史服务器地址--> <property> <name>mapreduce.jobhistory.address</name> <value>hadoop131:10020</value> </property> <!--历史服务器web端地址--> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>hadoop131:19888</value> </property> <!--可以不配置哈--> <property> <name>mapreduce.application.classpath</name> <value>/opt/module/hadoop-2.7.7/share/hadoop/mapreduce/*, /opt/module/hadoop-2.7.7/share/hadoop/mapreduce/lib/*</value> </property> </configuration> -
slaves群起配置文件 slaves
#注意:不要有空格哈 hadoop131 hadoop132 hadoop133 -
同步配置文件
sh xsync /opt/module/hadoop-2.7.7/etc/hadoop
-
群起
#启动hdfs 在hadoop131上执行 start-dfs.sh #启动yarn 在hadoop132上执行 必须在hadoop132上 因为manager在 start-yarn.sh #启动历史守护 mr-jobhistory-daemon.sh start historyserver #查看进程 jps
-
测试
-
至此,一个小小的hadoop集群就搭建起来了!为自己点赞👍
结语
心血来潮想学习一下Hadoop,为了督促自己的总结习惯,每周发布一次总结到掘金,希望自己坚持不懈,功成之路,满是荆棘。