安装 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.xml : mapreduce 配置文件,重要参数如下:
<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>
<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
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com