1.服务器免密登录,查看https://my.oschina.net/undermoonlightperson/blog/1806187. 基于centos 7 关闭防火墙 sytemctl disable firewalld
2.hadoop 基础组建简介:
2.1.在HDFS中有两种节点,分别是NameNode和DataNode。 NameNode负责集群中与存储相关的调度,DataNode负责具体的存储任务。具体来说NameNode维护了整个文件系统的元数据信息,这些信息以两种形式的文件存储,一种是镜像文件(image文件),另一种是编辑日志(edit log)。
NameNode会在文件系统启动时,动态地加载这些文件到内存中以响应客户端的读写请求。 DataNode用来执行具体的存储任务:存储文件块。另外它也会定时的通过心跳向NameNode报告自己的状态(包括存储的文件块的信息)。
NameNode的安全模式:在启动NameNode后,它会进入安全模式,所谓“安全模式”是指,在此期间它会接收DataNode的心跳包及块的状态信息,以此来判断块的副本安全性。在达到一定比例的块副本安全性时,NameNode将退出安全模式。 NameNode的安全保障: NameNode的作用在HDFS的集群中显而易见。一般而言,有两种机制来保证其自身及其上数据的安全
2.2集群规划
(三台DataNode 因为机有限,提高计算) master:部署NameNode,DataNode,NodeManager,JobHistoryServer slave1:部署ResourceManager,DataNode,NodeManager,WebAppProxyServer slave2:部署SecondaryNameNode(第二个nameNode),DataNode,NodeManager
3.部署步骤,基于hadoop 2.7.6下载编译hadoop 、修改配置文件、格式化、像各个节点发送配置
配置文件信息: hadoop-env.sh 修改java_home
core-site.xml
<property> <name>fs.defaultFS</name> <value>hdfs://master:8020</value> </property>
<property> <name>hadoop.tmp.dir</name> <value>/home/sw/app/hadoop/data/tmp</value> </property>
<property> <name>fs.trash.interval</name> <value>10080</value> </property>
hdfs-site.xml
<property> <name>dfs.replication</name> <value>3</value> </property>
<property> <name>dfs.permissions.enabled</name> <value>false</value> </property>
<property> <name>dfs.namenode.http-address</name> <value>master:50070</value> </property>
<property> <name>dfs.namenode.secondary.http-address</name> <value>slave2:50090</value> </property>
maperd-site.xml
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
<property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> </property>
<property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> </property>
<property> <name>mapreduce.job.ubertask.enable</name> <value>true</value> </property>
yarn-site.xml
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>
<property> <name>yarn.resourcemanager.hostname</name> <value>slave1</value> </property>
<!-- web application proxy安全 -->
<property> <name>yarn.web-proxy.address</name> <value>slave1:8888</value> </property> <!-- 开启日志 --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!--- 日志删除时间 -1禁用 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property>
<!-- yarn 内存 -->
<property> <name>yarn.nodemanager.resource.memory-mb</name> <value>4192</value> </property> <!-- yarn cpu 4核 --> <property> <name>yarn.nodemanager.resource.cpu-vcores</name> <value>4</value> </property>
修改slaves 文件, 删除localhost ,添加集群机器信息 matster slave1 slave2
格式化hadoop (可以配置环境变量,直接执行,bin 和sbin下命令) bin/hadoop namenode -format 日志输出:/home/sw/app/hadoop/data/tmp/dfs/name has been successfully formatted.表示成功
拷贝hadoop到别的机器
4.集群测试
在master 启动hdfs start-dfs.sh 在浏览器中发现datanode活动节点只有一个,然后分析其它机器的启动日志,发现datanode在启动的时候会访问 core-site.xml下这个配置项,但是这个端口在master下没有开放,造成访问不通,然后开启这个端口,重新启动,问题解决。 <property> <name>fs.defaultFS</name> <value>hdf://master:8020</value> </property>
在slave1启动yarn 因为配置在了slave1 在master中启动jobhistory mr-jobhistory-daemon.sh start historyserver
在slave1启动防护进程:yarn-daemon.sh start proxyserver
打开浏览器(如果访问不了,看下端口是否没正确打开) http://masterip:50070 hdfs http://ResourceManager机器ip:8088
小的功能测试,wordcount, 上传文件: hdfs dfs -put /etc/profile /input (上传的目录) 执行命令: hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar /input(文件目录) /out(输出文件目录)