Hadoop安装部署过程


安装HADOOP先决条件

SHH安装,并且有公用ssh无密码跳转账号:admin(机器默认会安装SSH)

在namenode和各个slave上用机器名互相ping,ping不通的话,无法进行

JAVA环境安装(JDK1.6即可兼容HADOOP0.20.2版本)

安装路径:/home/admin/deploy/java6

安装HADOOP

安装HADOOP版本为0.20.2

安装路径:/home/admin/deploy/hadoop-0.20.2

首先格式化hdfs:执行hadoop namenode -format命令,如果不执行此命令在每次重启hadoop会进入安全模式

 

 

 

 

 

核心配置文件

hadoop-env.sh:该文件用来配置hadoop所需的特殊环境变量:

JAVA与HADOOP环境变量的设置(如果在~/.bash_profile中设置了环境变量,这里可以不进行配置)

export JAVA_HOME=/home/admin/deploy/java6

export HADOOP_HOME=/home/admin/deploy/hadoop-0.20.2

JAVA虚拟机性能调优(省略不用修改的内容)

HADOOP_NAMENODE_OPTS="-Xmx2048m–Xms1024m -Xmn1024m

HADOOP_DATANODE_OPTS="-Xmx2048m–Xms1024m -Xmn1024m

HADOOP_JOBTRACKER_OPTS="-Xmx2048m–Xms1024m -Xmn1024m

补充解释: 

这里的XMS与XMX指的是JAVA虚拟机内存分配策略中的最大可用内存和最小内存设置。

不建议将XMS与XMX设置成一样。因为java的垃圾回收器在内存使用达到XMS值的时候才会开始回收,如果2个值一样,那么JAVA会在使用完所有内存时才会回收垃圾,导致内存LOAD一直很高。

关于XMN这个参数是JAVA内存机制中的年轻代。

整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小

持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。这里为了便于计算,取整个堆的一半。

另外:如果JAVA内存设置过大,HADOOP启动会报错

Error occurred during initialization of VM,Could not reserve enough space for object heap

 

 

core-site.xml:核心代码配置文件,需要修改的参数如下,其余可以先采用默认配置

<property>

   <name>fs.default.name</name>

   <value>hdfs://xxxxxxxxxx:9000</value>

 </property>

 <property>

   <name>hadoop.tmp.dir</name>

   <value>/home/admin/deploy/hdfs</value>

 </property>

内容说明:

hadoop.tmp.dir:

这是hdfs存放namenode名空间和datanode数据块的地方,可以设置为任意存在的目录,默认在/tmp/Hadoop-username目录下,建议重定向目录

如果遇到namenode启动失败,很可能是这个配置文件的问题。

如果遇到datanode启动失败,一般是没有成功格式化hdfs,实在无法解决的话,可以尝试将{Hadoop.tmp.dir}清空,重新格式化hdfs。

fs.default.name

顾名思义,这个配置是HDFS的NAMENODE的地址与端口号

 

 

 

 

 

 

hdfs-site.xml:节点的hdfs配置文件,需要修改的参数如下:

<property>

    <name>dfs.replication</name>

   <value>1</value>

 </property>

内容说明:

dfs.replication:

HDFS的文件块备份。测试环境一般不用备份块,设置为1。

 

mapred-site.xmlmapreduce配置文件,重要参数如下:

<property>

  <name>io.sort.mb</name>

  <value>200</value>

  <description>The total amount of buffer memory to use whilesorting

   files, inmegabytes.  By default, gives each mergestream 1MB, which

   shouldminimize seeks.</description>

 </property>

在map排序时buffer的内存大小,如果过小,map会将一部分结果写到磁盘上。

以MB为单位,默认100M

这个选项定义了map输出结果在内存占用buffer的大小,当buffer达到一定阈值,会启动一个后台线程来对buffer的内容进行排序,然后写入本地磁盘(一个spill文件)

根据map输出数据量的大小,可以适当的调整buffer的大小,但不是越大越好。

假设内存无限大,io.sort.mb=1024(1G), 和io.sort.mb=300 (300M),前者未必比后者快,因为1G的数据排序一次和排序3次,每次300MB。(分治算法)

扩展:分治算法:

分治法解题的一般步骤:

  (1)分解,将要解决的问题划分成若干规模较小的同类问题;

  (2)求解,当子问题划分得足够小时,用较简单的方法解决;

3)合并,按原问题的要求,将子问题的解逐层合并构成原问题的解。

  <property>

   <name>mapred.job.tracker</name>

   <value> xxxxxxxxxx:9001</value>

 </property>

jobtracker的地址 ,指定端口号

 <property>

   <name>mapred.tasktracker.map.tasks.maximum</name>

   <value>5</value>

 </property>

 <property>

   <name>mapred.tasktracker.reduce.tasks.maximum</name>

   <value>5</value>

 </property>

 每个tasktracker上最大map和reduce的数量,如果已经跑满,JobTracker(JT)就不会再分配task到这台TT上。

 <property>

   <name>mapred.system.dir</name>

   <value>/mapred/system</value>

   <description>The shared directory where MapReduce stores controlfiles.

   </description>

 </property>

 <property>

   <name>mapred.temp.dir</name>

   <value>/mapred/temp</value>

   <description>A shared directory for temporary files.

   </description>

 </property>

MAP与reduce处理过程中产生的临时文件,2个文件路径需要完全独立,且不能与data存放的路径重合。

 

启动与停止

启动脚本:start-all.sh(返回内容如下):

starting namenode, logging to /home/hadoop/hadoop-0.20.2-cdh3u1/logs/hadoop-admin-namenode-xxxxxxxxxx.out

xxxxxxxxxx: starting datanode, logging to /home/admin/deploy/hadoop-0.20.2-cdh3u1/bin/../logs/hadoop-admin-datanode-xxxxxxxxxx.out

xxxxxxxxxx: starting secondarynamenode, logging to /home/admin/deploy/hadoop-0.20.2-cdh3u1/bin/../logs/hadoop-admin-secondarynamenode- xxxxxxxxxx.out

starting jobtracker, logging to /home/hadoop/hadoop-0.20.2-cdh3u1/logs/hadoop-admin-jobtracker-xxxxxxxxxx.out

xxxxxxxxxx: starting tasktracker, logging to /home/admin/deploy/hadoop-0.20.2-cdh3u1/bin/../logs/hadoop-admin-tasktracker-xxxxxxxxxx.out

停止脚本:stop-all.sh(返回内容如下):

stopping jobtracker

xxxxxxxxxx: stopping tasktracker

stopping namenode

xxxxxxxxxx: stopping datanode

xxxxxxxxxx: stopping secondarynamenode

 

一些潜规则(权限切换)

admin账号下使用hadoop,需要更改hadoop上的目录的权限,此时需要在hadoop账号下执行以下两条命令:

hadoopfs -chown -R admin:admin /
hadoop fs -chown -R hadoop:hadoop /user/hadoop/mapred/system

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值