本文,针对hadoop的整体搭建过程,给予一个详细的介绍。
1:hadoop版本:采用hadoop-2.6.5版本,下载地址:下载地址
下载190M的tar包即可,该包是编译直接可用的。
2:我使用的机器版本:
Linux version 2.6.32-504.el6.x86_64 ([email protected]) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC) ) #1 SMP Wed Oct 15 04:27:16 UTC 2014
3:jdk版本:1.8.0_111
下面是详细的安装步骤:
1:解压缩:创建目录,解压缩,目录自定义即可,我的是用户目录下直接命名为hadoop,方便使用。
大致可以看到,解压后的目录如上图:
从左到右,bin目录下是常用的一些执行任务的脚本,比如我们用的hdfs相关的shell,hadoop相关的一些提交任务的脚本,都在这里。
data是hadoop使用过程中一些临时数据存放的地方,这么说也不太合适,举个简单例子,hdfs作为文件存储系统,一些文件索引,当前使用块等信息,都是在该目录下;以及,yarn启动后NodeManager的本地目录,也在这里有一席之地。
etc下就只有一个目录,叫做hadoop,用途就是我们hdfs,mapreduce,yarn运行中的各种配置,非常重要,常用的一些调优,配置都在这里。
sbin目录,里面大部分是启动服务的脚本,与bin不同,这里是用于启动hdfs,启动yarn的,用于支撑我们其他服务的运行。
share文件夹,里面是我们hadoop常用的很多包,这就可以解释为什么我们执行任务时候直接以hadoop jar的方式就能够正常运行一些包了,因为很多的第三方的包,都已经由hadoop默认给我们加载了;这也启发我们,如果想要对hadoop底层一些东西进行修改的话,我们可以把这里面的jar包的源码下载下来,自己进行修改,然后重新打包运行,就可以达到满意的效果了。
2:重要的配置文件修改:前文说过,如下的配置文件均在etc/hadoop内。
1:hadoop-env.sh
纵观hadoop-env.sh,会发现里面的配置非常多,但是对于我们来说,通常需要修改的配置只有一个:
export JAVA_HOME=
定义我们本机的JAVA_HOME即可,找寻本地的JAVA_HOME,可以通过echo $JAVA_HOME查看。
必须注意,这个文件必须修改,否则启动服务会因为找不到Java虚拟机而停止运行。
2:core-site.xml
就狭义上来说,hadoop包含三大块:分布式文件系统HDFS,分布式计算模型MapReduce(这是个有点虚的东西,多写代码才能深有体会),YARN(资源调度和管理系统)。
而core-site.xml,就是HDFS的基本配置文件,里面的相关配置,都是针对于HDFS的。
通常来说,其内配置如下即可:
fs.defaultFS
hdfs://authsvr01:9000
hadoop.tmp.dir
/home/yuzhao.yang/hadoop/data
通常来说,配置如上即可,这里,我们可以看到,配置了hadoop.tmp.dir,对应于我上面的data,也就是hdfs运行时候的临时数据所在。
说一下这里的fs.defaultFS,通常来说,我们访问hdfs上文件的时候,都是通过该url产生数据流进行访问的,而其他通用配置如该链接:hdfs配置链接
3:hdfs-site.xml
dfs.namenode.http-address
authsvr01:50070
dfs.namenode.secondary.http-address
datasvr35:50090
dfs.namenode.name.dir
/home/yuzhao.yang/hadoop/name
dfs.replication
2
dfs.datanode.data.dir
/home/yuzhao.yang/hadoop/data
在真正的集群中,这个文件也是必须要配置的,其中的配置相对于core-site来说,更加细致一些,具体参数含义,大家可以参照上文中的链接:
4:mapred-site.xml
如上文所述,本文件是为mapreduce计算模型准备的,我使用的版本,支持了使用YARN来进行运行时候的资源调度,所以配置文件内容如下:
mapreduce.framework.name
yarn
简单的一句话,就指定了资源调度框架使用yarn,至于更具体的配置,可以参照上文提供的链接。
5:yarn-site.xml
既然指定了用yarn来做资源调度和管理的框架,那么,毫无疑问也要定义yarn相关的配置文件,即yarn-site.xml文件;具体的配置项很多,这里不予赘述,附上我的一个简单版本:
yarn.resourcemanager.hostname
authsvr01
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
yarn.resourcemanager.address
${yarn.resourcemanager.hostname}:10032
yarn.resourcemanager.scheduler.address
${yarn.resourcemanager.hostname}:10030
yarn.resourcemanager.webapp.address
${yarn.resourcemanager.hostname}:10088
yarn.resourcemanager.webapp.https.address
${yarn.resourcemanager.hostname}:10090
yarn.resourcemanager.resource-tracker.address
${yarn.resourcemanager.hostname}:10031
yarn.resourcemanager.admin.address
${yarn.resourcemanager.hostname}:10033
语义明晰,很好看懂。
关于这个配置,推荐董老师的博客:董的博客,里面介绍了非常详细的关于yarn的配置。
另外一篇文章,也介绍的很好,参照这两篇文章,基本出现的端口占用都能够解决了:
https://blog.csdn.net/qqq824908000/article/details/70790534
因为yarn相关配置的端口非常多,不太容易记得,网上这些介绍的比较详细的文章就很不错了。
这样,一台机器上的hadoop就配置完毕了,其中主要牵涉到四个配置文件:
按照这个顺序,很好记住;更加详细的配置和调优,参数都在此处:hadoop-2.6.5配置
大家使用的其他版本,则可以参照http://hadoop.apache.org/docs/寻找各自版本的配置。
6:既然是集群搭建,那就需要清除hadoop的集群架构,遵从于master/slave的基本架构,所以,我们可以看到在etc/hadoop目录下看到一个slaves文件,其中指定datanode的host,然后把文件拷贝到对应的地址即可正常运行hdfs。
如此部署完毕后,将相同的配置拷贝到其他机器上运行即可。
最后,注意启动hdfs和yarn的时候,必须在自己的master机器上启动,否则可能会报错。
我的配置中,在slaves机器中同时指定了本机的host,这样就可以多启动一台datanode来使用。