Hadoop环境配置教程总结

前言

记录一下学习搭建Hadoop环境时看的一些文章

正文

1,单机模式

Macos 上安装 Hadoop

  1. 把 hadoop 包放到某个目录下后,要修改目录的权限

sudo chown -R you:yourgroup /usr/local/hadoop/

  1. 其它文章
    Mac下Hadoop的安装和启动:可以参考这个文章来安装。
    Mac OS X Yosemite安装Hadoop 2.6记录:这个文章有个运行 hadoop mapreduce 的例子。

2,伪分布式

3,完全分布式安装与配置

基本配置:

CUP和内存配置:

注意:
(1)在配置完全分布式时,原来以为Slave机器在配置core-site.xml和hdfs-site.xml等文件时,可以少配置很多东西。但其实不是,也需要配置很多东西。就有一个篇解决Slave配置中问题的文章中写的一部分:

把Master中的core-site.xml和hdfs-site.xml文件拷贝一份到slave机器。

这段说明可以看出,Master机器和Slave机器在基础配置里还是有很多东西要一样的。

(2)如果想在本机用虚拟机进做环境的话,一定要设置好“内存”和“CPS”的参数。因为如果这个设置不好的话,会有下面的两种情况:

  • 程序会一直停留有Pending的状态,不能进入到Running状态,因为没有资源能够分配。我刚才开始搭建环境的时候,给Master和Slave虚拟机只分配了1G的内存,而没有修改“内存”和“CPU”相关的相关配置(这些参数的默认值有很多就超过了1G)。
  • 到了Running状态,启动log始终显示mapreduce.Job: map 0% reduce 0%。这是因为yarn.nodemanager.resource.memory-mb 配置的最小值必须为4096,但我只设置了1024。把虚拟机的内存设置为5120(1024 x 5)后,再把内存的相关参数扩大后,就可以运行了。
    关于map 0% reduce 0% 参考:
  • MapReduce in Hadoop 2.2.0 not working
  • Map reduce job getting stuck at map 0% reduce 0%

(3)Master和Slave上的几个conf配置文件不需要全部同步,如果确定都是通过Master去启动和关闭,那么Slave机器上的配置不需要去维护。但如果希望在任意一台机器都可以启动和关闭Hadoop,那么就需要全部保持一致了。

(4)Master和Slave机器上的/etc/hosts中必须把集群中机器都配置上去,就算在各个配置文件中使用的是IP。这个吃过不少苦头,原来以为如果配成IP就不需要去配置Host,结果发现在执行Reduce的时候总是卡住,在拷贝的时候就无法继续下去,不断重试。另外如果集群中如果有两台机器的机器名如果重复也会出现问题。

(5)如果在新增了节点或者删除节点的时候出现了问题,首先就去删除Slave的hadoop.tmp.dir,然后重新启动试试看,如果还是不行那就干脆把Master的hadoop.tmp.dir删除(意味着dfs上的数据也会丢失),如果删除了Master的hadoop.tmp.dir,那么就需要重新namenode –format。

上面的(3)~(5)参考:Hadoop中的集群配置和使用技巧

4,测试搭建的环境:

(1)使用命令:jps
使用$HADOOP_HOME/sbin目录下的:start-dfs.sh和start-yarn.sh命令,启动hdfs和yarn后,在Master机器上,使用JPS命令后,能看到以下的进程:

  • ResourceManager
  • NameNode

在Slave机器上,使用JPS命令后,能看到以下的进程:

  • DataNode
  • SecondaryNameNode
  • nodemanager

因为我把SecondaryNamenode配置到了Slave机器上,所以显示在Slave上面。

(2)测试WEB服务
用下面的url查看Web服务是否启动:

(3)运行程序
参考下面的文章来运行测试程序。下面文章最下面的部分,写了如何运行Hadoop自带的程序,来测试搭建的环境。
Ubuntu上搭建Hadoop环境(单机模式+伪分布模式)

5,配置文件的中使用的设置的解释

core-site.xml:

<property>
    <name>hadoop.tmp.dir</name>
    <value>file:/usr/local/hadoop/tmp</value>
</property>
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop-master:9000</value>
</property>
<!-- secondarynamenode setting -->
<property>
  <name>fs.checkpoint.period</name>
  <value>3600</value>
</property>
<property>
  <name>fs.checkpoint.size</name>
  <value>67108864</value>
</property>

fs.defaultFS:定义NameNode的URI和端口
hadoop.tmp.dir:SecondaryNamenode就生成在这个目录中,所以这个目录的权限一定要给Hadoop用户
fs.checkpoint.period:表示多长时间记录一次hdfs的镜像。默认是1小时
fs.checkpoint.size:定义了edits日志文件的最大值,一旦超过这个值会导致强制执行备份(即使没到检查点的最大时间间隔)。默认值是64MB

hdfs-site.xml:

<property>
    <name>dfs.replication</name>
    <value>1</value>
</property>
<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/usr/local/hadoop/hdfs/name</value>
</property>
<property>
   <name>dfs.datanode.data.dir</name>
   <value>file:/usr/local/hadoop/hdfs/data</value>
</property>
<!-- secondary namenode setting -->
<property>
    <name>dfs.http.address</name>
    <value>hadoop-master:50070</value>
</property>
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>hadoop-slave-1:50090</value>
</property>

dfs.replication:分布式文件系统数据块复制数。一般来说,设置3(份)就可以。
dfs.namenode.name.dir:NameNode 持久存储命名空间及事务日志的本地文件系统路径。
dfs.datanode.data.dir:DataNode存放块数据的本地文件系统路径,逗号分割的列表。
dfs.http.address:NameNode节点开放的HTTP服务,是由Secondary 节点获取fsimage ,edits 文件的通道
dfs.namenode.secondary.http-address:Secondary 节点开放的HTTP服务,是由NameNode节点获取新的fsimage 文件的通道

mapred-site.xml:

<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

mapreduce.framework.name:新框架支持第三方 MapReduce 开发框架以支持如 SmartTalk/DGSG 等非 Yarn 架构,注意通常情况下这个配置的值都设置为 Yarn,如果没有配置这项,那么提交的 Yarn job 只会运行在 locale 模式,而不是分布式模式。

yarn-site.xml:

<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hadoop-master</value>
</property>
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
</configuration>

yarn.resourcemanager.hostname:ResourceManager的主机名
yarn.nodemanager.aux-services:NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序

6,hadoop 环境变量作用

  1. HADOOP_CONF_DIR
    当 spark 想要使用本地 hadoop 配置的时候(core-site.xml、hdfs-site.xml 等),在spark-env.sh里设置 HADOOP_CONF_DIR。HADOOP_CONF_DIR 指向 hadoop 配置目录。
    例如:export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

  2. HADOOP_OPTS
    Hadoop启动时的JVM参数,默认是以server模式启动,可以加入-X或-XX之类的参数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值