贫农的大数据之五(Hadoop集群部署)
来源:互联网 发布:微星知乎 编辑:程序博客网 时间:2024/05/19 05:29
Hadoop部署的文章和介绍网上资料很丰富,涉及各个方面,所以笔者不是要详细介绍如何部署Hadoop,而是以反思为主,记录我们曾经走过的弯路和一些体会。
Hadoop部署
- 环境机器配置 Centos6.3,CPU:E5507 2.27GHz 4Core,内存:16G,硬盘:8*500G NORAID SCSI,文件系统:XFSIP分别为:192.168.0.120/121/122/123/124/125/126/26/27/28
无DNS服务器NameNode/JobTracker:192.168.0.120DataNode/TaskTracker:192.168.0.121/122/123/124/125/126/26/27/28Apache Hadoop1.0.4(后来升级到了1.2.1)SUN JDK 1.6
Tips:对于只为hadoop使用的磁盘分区使用noatime挂载,提高性能,使用如下命令mount -o noatime -o nodiratime -o remount /data
- 目录规划
为了简化以后升级,将Hadoop解压到一个特定的目录中,如hadoop-versions。然后通过软链接的方式将在用的hadoop版本链接到一个常用的位置,例如:ll /usr/local/hadoop-versions/total 8drwxr-xr-x 15 root root 4096 Mar 26 15:25 hadoop-1.0.4drwxr-xr-x 15 root root 4096 Mar 26 16:38 hadoop-1.2.1ll /opt/ |grep hadooplrwxrwxrwx 1 root root 34 Apr 11 09:30 hadoop -> /letv/hadoop-versions/hadoop-1.2.1
- 配置主机名
主机名使用FQDN的形式,确保反向DNS查找可靠准确;但是为了方便管理也需加上缩略域名,例如我的/etc/hosts192.168.0.120mn.dm.commn192.168.0.121dn121.dm.comdn121192.168.0.122dn122.dm.comdn122192.168.0.123dn123.dm.comdn123192.168.0.124dn124.dm.comdn124192.168.0.126dn125.dm.comdn125192.168.0.126dn126.dm.comdn126192.168.0.26dn26.dm.comdn26192.168.0.27 dn27.dm.comdn27192.168.0.28 dn28.dm.comdn28
按照规划的内容来编辑所有节点的/etc/hosts。然后修改每个节点的主机名,首先使用hostname命令让主机名立即生效,如
hostname mn.dm.com
然后为了确保服务器重启后主机名仍然有效,编辑/etc/sysconfig/network文件,修改HOSTNAME属性为对应值。
Tips:
(a)千万别忘记修改这个文件放在机器重启域名丢失;
(b)对于hadoop集群的配置管理、文件分发来说,例如修改/etc/hosts,可以使用pssh、pdsh或者mussh这些工具,如果有条件就使用Puppet这样的重器。我们目前用的是pssh,对于我们这个小集群来说已经觉得生活很惬意了。 - 配置SSH无密码登陆
在NameNode节点运行ssh-keygen -t dsa -f ~/.ssh/id_dsa
这个命令会生成两个文件到~/.ssh/目录中:id_dsa和id_dsa.pub。把 id_dsa.pub 追加到本机授权 key 里面cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
至此,就可以实现本机的无密码登陆,运行ssh localhost试试看吧。类似的操作,将NameNode上的这个id_dsa.pub分发到所有其它节点上,然后追加到每个节点的
authorized_keys里,就可以实现从NameNode到任何DateNode的ssh无密码登陆了 - 安装配置hadoop
登陆NameNode进行以下操作
安装没有什么,按照之前的目录规划解压hadoop即可。
配置hadoop不要单纯拷贝缺省配置到conf目录下,然后更改需要的属性,这样以后维护起来太麻烦了。
作为小团队来说,我们的原则是不要一上来就拷贝别人的配置文件,因为应用场景不同,环境不同,许多参数配置并不是万能的,而是只修改必要的属性。在以后的使用中很可能会由于某些属性未正确设置,造成集群出现这样或那样的问题,但是我觉得让问题暴漏出来不是什么坏事情,发现问题之后再查找相关资料进行正确的调整优化,不但保证了配置的简单性,还能让你真正的一步一步的了解hadoop。
配置的文件主要涉及conf下的hadoop-env.sh、masters、slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、log4j.properties。
配置完成后使用pssh分发到其它节点,例如:#分发hadoop安装(如果hadoop-versions已经存在,只拷贝hadoop特定版本目录即可)#hosts.txt是DataNode节点的主机名列表,详见pssh手册pscp.pssh -h hosts.txt -r /usr/local/hadoop-versions/ /usr/local/hadoop-versions/#创建软链接pssh -h hosts.txt -i "ln -s /letv/hadoop-versions/hadoop-1.2.1 /opt/hadoop"
- 配置环境变量
在/etc/profile中配置必要的环境变量。如下:JAVA_HOME=/usr/java/jdk1.6.0_43HADOOP_HOME=/opt/hadoopHBASE_HOME=/opt/hbase-0.94.7PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HBASE_HOME/bin:$PATHCLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport JAVA_HOMEexport HADOOP_HOMEexport HBASE_HOMEexport PATHexport CLASSPATH
- 使用Hadoop
启动集群。
HDFS的web界面:http://mn.dm.com:50070/dfshealth.jsp
MapReduce的web界面:http://mn.dm.com:50030/jobtracker.jsp
Hadoop版本历史
下图给出了Hadoop2之前的各个版本发展历史
Hadoop当前配置
这些配置仅做参考
- hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.6.0_43export HADOOP_LOG_DIR=/mycom/logs/hadoopexport HADOOP_PID_DIR=/var/hadoop/pids
- core-site.sh
<property> <name>hadoop.tmp.dir</name> <value>/data/slot1/hadoop-${user.name}</value></property><property> <name>fs.default.name</name> <value>hdfs://mn:9000</value></property><property> <name>hadoop.proxyuser.xxx.groups</name> <value>xxx</value></property><property> <name>hadoop.proxyuser.xxx.hosts</name> <value>dn124,dn126</value></property><property> <name>fs.trash.interval</name> <value>1440</value></property>
- hdfs-site.xml
<property> <name>dfs.data.dir</name> <value>${hadoop.tmp.dir}/dfs/data,/data/slot2/hadoop-${user.name}/dfs/data,/data/slot3/hadoop-${user.name}/dfs/data,/data/slot4/hadoop-${user.name}/dfs/data,/data/slot5/hadoop-${user.name}/dfs/data,/data/slot6/hadoop-${user.name}/dfs/data</value></property><property> <name>dfs.datanode.max.xcievers</name> <value>4096</value></property>
- mapred-site.xml
<property> <name>mapred.job.tracker</name> <value>mn:9001</value></property><property> <name>mapred.local.dir</name> <value>${hadoop.tmp.dir}/mapred/local,/data/slot2/hadoop-${user.name}/mapred/local,/data/slot3/hadoop-${user.name}/mapred/local,/data/slot4/hadoop-${user.name}/mapred/local,/data/slot5/hadoop-${user.name}/mapred/local,/data/slot6/hadoop-${user.name}/mapred/local</value></property><property> <name>mapred.tasktracker.map.tasks.maximum</name> <value>4</value></property><property> <name>mapred.tasktracker.reduce.tasks.maximum</name> <value>4</value></property><property> <name>mapred.child.java.opts</name> <value>-Xmx1024m</value></property>
0 0
- 贫农的大数据之五(Hadoop集群部署)
- 贫农的大数据之三(Storm集群部署)
- 贫农的大数据之二(Kafka)
- 贫农的大数据之四(Storm简介及开发)
- 贫农的大数据之一(设计篇)
- 大数据系列之Hadoop分布式集群部署
- 大数据学习第二章 hadoop集群的部署
- 大数据之Spark集群部署
- 大数据学习22:Apache-Hadoop 2.8.1 集群部署
- 大数据集群部署
- 大数据教程(五)—— Hadoop集群MYSQL的安装
- 大数据教程(五)—— Hadoop集群MYSQL的安装
- 【大数据】搭建简单的Hadoop集群
- hadoop集群的部署
- 大数据之Hadoop平台(五)Hadoop多用户管理
- Kubernetes部署大数据组件系列二:一键部署Hadoop集群
- 大数据---hadoop集群搭建
- (大数据之hadoop)hadoop1.0集群搭建
- 修改oracle端口号
- Ice简单示例
- 如何成功运行SDL官方提供的Android平台的Demo
- 硬链接和符号链接
- 音频和视频同步ffplay5原理
- 贫农的大数据之五(Hadoop集群部署)
- C#开发android之alertdialog用法
- Activity学习认知
- 超棒的翻译--ASIHTTPRequest使用指南
- CloudStack + XenServer 部署 – 高级网络功能应用(10)
- ntohl(),htonl(),ntohs()
- A*算法入门--A* Pathfinding for Beginners
- 下载visual studio
- Java 枚举7常见种用法