<p>我们在学大数据的时候hadoop是躲避不开的地方,所以如何在linux中部署hadoop,下面就是手把手教你如何部署hadoop。你只要复制粘体,然后按enter键就可以了。</p>
讯享网
准备:
安装Linux版本的服务器。可以参考中前半部分安装服务器的内容即可:VM部署CentOS并且设置网络_ZeroMaster的博客-CSDN博客
设置服务器ip: 192.168.171.5
1:下载jdk
讯享网
2:解压jdk安装包
3:移动并重命名jdk包
讯享网
4:配置java环境变量
5:查看java是否安装成功
讯享网
1:下载hadoop包
2;解压hadoop包并转移到指定文件
讯享网
3:配置hadoop环境变量
4:修改配置文件yarn-env.sh和hadoop-env.sh
讯享网
5:查看hadoop是否安装成功
1. 修改Hadoop配置文件 core-site.xml。
讯享网
输入i进入编辑模式。 在<configuration></configuration>节点内插入如下内容。
2. 修改Hadoop配置文件 hdfs-site.xml。
讯享网
在<configuration></configuration>节点内插入如下内容
1:创建公钥和私钥
讯享网
2. 执行以下命令,将公钥添加到authorized_keys文件中。
若报错,执行下面操作后重新执行上面两句命令;若没有报错直接进入第五步:
讯享网
然后向里面加入如下的内容
输入如下命令使改动生效
讯享网
1:初始化namenode
2:启动hadoop
讯享网
这个时候可能出现如下错误
其实是hadoop里面hadoop-env.sh文件里面的java路径设置不对,才会导致如上问题。
进入:
讯享网
最后重新执行start-dfs.sh就可以了。
若有选择Y/N的,选择Y;其他直接回车
再执行:
3.启动成功后,执行以下命令,查看已成功启动的进程。
讯享网
出现如下
4:打开浏览器访问http://192.168.171.5:8088和http://192.168.171.5:50070,显示如下界面则表示Hadoop伪分布式环境搭建完成
4:一些命令
(1):如果是集群查看resourcemanager的状态。在/bin下执行
讯享网
参考:通过命令来查看NameNode的状态(是Active还是Standby)_快乐的跳蚤的博客-CSDN博客
(2):查看运行的程序
(3):启动hadoop的命令行:
讯享网
(4)发现HDFS上存储数据
https://blog.csdn.net/wszhm123/article/details/hadoop fs -du -h /
(5)发现HDFS上存储数据
https://blog.csdn.net/wszhm123/article/details/hadoop rm -r -f /
(6)查看hadoop集群中Resourcemanager(RM)状态
1:Hadoop集群特定配置文件
2:Hadoop守护进程
除了上面提到的配置文件,Hadoop管理员还可以使用下面的脚本文件来配置Hadoop集群:
- hadoop-env.sh
- yarn-env.sh
- mapred-env.sh
这些脚本文件主要负责设置如下属性
- Java主目录
- 不同的日志文件位置
- 用于各种守护进程的JVM选项
守护进程配置变量
守护进程 环境变量
名称节点 HADOOP_NAMENODE_OPTS
数据节点 HADOOP_DATANODE_OPTS
辅助名称节点 HADOOP_SECONDARYNAMENODE_OPTS
资源管理器 YARN_RESOURCEMANAGER_OPTS
节点管理器 YARN_NODEMANAGER_OPTS
Hadoop配置文件的优先级
Hadoop集群中的每个节点必须要有配置文件的一个拷贝,包括集群的客户端节点。这些配置文件以如下次序应用到系统中(优先级由高到低):
1)MapRduce任务初始化的时候,由JobConf或者Job对象指定的值
2)客户端节点的 *-site.xml
3)从节点的 *-site.xml
4) -default.xml 文件中的默认值,这个文件是集群中的所有节点都相同
3:主要配置文件说明
core-site.xml一些通用属性
mapred-site.xml一些关键属性
mapreduce.reduce.memory.mb 设定分配给Reduce任务的容器的内存大小,默认值是1024MB mapreduce.cluster.local.dir MapReduce存储中间数据文件的本地目录。它可以是逗号分隔的存在于不同设备的目录的列表,这样可以提高磁盘I/O。比如存放Mapper过程的数据输出的文件和存放shuffle-sort过程中排序的中间数据结果的文件。其默认值是${hadoop.tmp.dir}/mapred/local,这与value dfs.du.reserved属性值(core-site.xml中指定)相关。一般来说,建议设置不超过75%的硬盘空间来存放HDFS数据,25%的硬盘空间用于存放中间数据文件 mapreduce.jobtracker.handler.count 作业跟踪器(相当于YARN)的服务器进程数量。该属性值应大约为集群中从节点数量的4%,其最小值为10,该属性默认值为10 mapreduce.job.reduce.slowstart.completedmaps 在作业中调度Reducer之前,作业中Map完成百分比。默认值是0.05,但是建议值是0.5到0.8之间 mapreduce.jobtracker.taskscheduler 该类负责人物的调度。其默认值为FIFO的调度策略,其属性值为org.apache.hadoop.mapredJobQueueTaskScheduler。但是推荐设置公平调度器或者计算能力调度器 mapreduce.map.maxattempts
每个Map任务重试的最大次数。框架在放弃执行Map任务并使作业失败之前,重复尝试执行一个Map任务的次数。其默认值为4 mapreduce.reduce.maxattempts 每个Reduce任务重试最大次数。框架在放弃执行Reduce任务并使作业失败之前,重复尝试执行一个Reduce任务的次数。其默认值为4
yarn-site.xml文件中的一些关键属性
参考:Hadoop中配置文件重要属性释义_hadoop配置文件详解_盛者无名的博客-CSDN博客

一 :namenode:
管理文件系统的命名空间,他维护着文件系统树及整棵树上所有的文件和目录,这些信息以两个文件形式永久的保存在本地磁盘上,命名空间镜像文件(fsimage)和(Editlogs) fsimage:namenode启动时,对整个文件系统的快照 editlogs:namenode启动以后,对文件系统的改动序列 namenode也记录着每个文件中各个块所在的数据节点信息(包括副本数,用户对hdfs的操作),但它并不永久保存块的位置信息,因为这些信息会在系统启动时根据数据节点信息重建。
启动命令:
hadoop-daemon.sh start namenode
二:datanode
讯享网 datanode负责提供来自文件系统客户端读和写的请求,受客户端或者namenode的调度,并且定期向namenode发送(通过心跳机制存储的块的列表)
启动命令:
hadoop-daemon.sh start datanode
三:journalNode
namenode之间为了数据同步,会通过一组称作JournalNodes的独立进程相互通信,当active状态的NameNode的命名空间有任何修改时,会告知大部分的JournalNodes进程。standby状态的NameNode有能力读取JournalNodes中的变更信息,并且一直监控editlog的变化,把变化应用与自己的命名空间。standby可以确保在集群出错时,命名空间状态已经完全同步了。为了确保快速切换,standby状态的NameNode有必要知道集群中所有数据块的位置。为了做到这点,所有的DataNodes必须配置两个NameNode的地址,发送数据块位置信息和心跳给他们两个。 对于HA集群而言,确保同一时刻只有一个NameNode处于active状态是至关重要的。否则,两个NameNode的数据状态就会产生分歧,可能丢失数据,或者产生错误的结果。为了保证这点,JournalNodes必须确保同一时刻只有一个NameNode可以向自己写数据。
启动命令:
hadoop-daemon.sh start journalnode
四:nodemanager
讯享网 yarn中的每一台节点服务器都运行一个NodeManager,NodeManager相当于管理当前机器的一个代理,负责本台机器的程序运行,并且对本台机器资源进行管理和监控,NodeManager定时向ResourceManager汇报本节点的资源(cpu,内存,磁盘)等使用情况,启动并监控Container(容器)。
启动命令:
yarn-daemon.sh start nodemanager
五:ResourceManager
管理集群资源,负责全局资源的监控,分配和管理。接收来自NodeManager的心跳信息,进行整体资源的汇总,监控ApplicationMaster的开启和创建。
启动命令:
yarn-daemon.sh start resourcemanager
https://blog.csdn.net/wszhm123/article/details/yarn –daemon start resourcemanager
六:ZKFC
讯享网 定期对本地的namenode发起health—check命令,如果nameNode正确返回,那么这个namenode被认为是ok的,否则被认为是失效节点,zookeeper提供了一个简单的机制来保证只有一个namenode是活动的,如果当前的namenode失效,那么另一个namenode将获取zookeeper的独占锁,表明自己是活动节点 作为一个zookeeper集群的客户端,用来监控namnode的状态信息,每个namenode的节点必须要运行一个zkfc
启动命令:
hadoop-daemon.sh start zkfc
七:SecondaryNameNode(检查节点)
namenode重启时,editlogs才会合并到fsimage文件中,从而得到一个文件系统的最新快照,但是在集群中,namenode是很少重启的,这也就意味着当namenode运行了很长一段时间后,edit-logs文件会非常大,这种情况就出现了以下问题: edit-logs文件非常大,怎么去管理 namenode重启需要花费很长的时间,因为有很多改动要合并到fsimage文件中 如果namenode挂掉了,那么就丢失了很多改动,此时的fsimage中,在这种情况下,丢失的改动不会特别多,因为丢失的改动是在内存中但是没有写到editlogs的这部分 secondary nameNode就是解决这个问题的,他的职责是合并namenode的editlogs文件到fsimage文件中 secondary nameNode定时查询namenode上的editlogs,并更新到fsimage上(是他自己的fsimage) 一旦他有了新的faimage文件,他将其拷贝到namenode中 namenode下次重启的时候,会使用这个新的fsimage,从而减少重启时间 关于NameNode是什么时候将改动写到edit logs中的?这个操作实际上是由DataNode的写操作触发的,当我们往DataNode写文件时,DataNode会跟NameNode通信,告诉NameNode什么文件的第几个block放在它那里,NameNode这个时候会将这些元数据信息写到edit logs文件中。
参考:NameNode的HA机制_namenode ha_拾荒路上的开拓者的博客-CSDN博客
1:hadoop报错,ERROR: Invalid HADOOP_COMMON_HOME)
首先确定hadoop的安装没有错误。
进入hadoop安装路径,cd (hadoop安装路径)
进入安装路径中的 etc/hadoop
修改该目录下的hadoop-env.sh文件
在该目录下添加java,hadoop环境换量(主要是hadoop环境变量),在里面输入下列代码
讯享网
2:错误Name node is in safe mode的解决方法
这是因为在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入安全模式。在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。
可以通过以下命令来手动离开安全模式:
用户可以通过dfsadmin -safemode value 来操作安全模式,参数value的说明如下:
enter - 进入安全模式
leave - 强制NameNode离开安全模式
get - 返回安全模式是否开启的信息
wait - 等待,一直到安全模式结束。
3:HA高可用下,NameNode切换active和standby状态
A为active B为standby
要互相切换
在A的namenode下执行
hdfs –daemon stop zkfc
可能需要等待几秒
hdfs –daemon start zkfc
讯享网

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/151990.html