Hadoop集群部署(基于2.7.1)
来源:互联网 发布:mastercam线割编程教程 编辑:程序博客网 时间:2024/04/30 14:37
Hadoop集群部署(基于2.7.1)
要尝试Hadoop,第一步就是要部署一个Hadoop的集群.
之前看官网上的教程,遇到了很多的问题,看博客又零零散散,而且大多基于原来的版本,和现在的目录结构也不同,所以重新整理了一下自己搭建的过程.若有不对之处,还望指正.
建立用户
建议在root用户下操作
创建用户组及用户
$ groupadd hadoop #创建hadoop用户组$ useradd -d /usr/hadoop/ -m -g hadoop hadoop #在hadoop组下创建用户hadoop,并分配主目录$ passwd hadoop #初始化hadoop用户密码
分配权限
修改/etc/sudoers文件,为Hadoop组用户添加sudo权限
%hadoop ALL=(ALL:ALL) ALL
hosts修改
在/etc/hosts文件中添加集群节点的信息
XXX.XXX.XXX.XXX masterXXX.XXX.XXX.XXX node1XXX.XXX.XXX.XXX node2
同时可以将/etc/hostname文件中的内容(即当前机器名称)改为master,node1,node2,有助于之后查看日志等时便于区分,该操作重启后方生效.
其他改动
准备工作
建议在hadoop用户下操作
- Hadoop包
- JDK
- ssh,rsync
JDK不必多说了吧,我想大家应该都很熟练,若真有不懂的,可以去搜搜别的博客,都很全面,给我留言也可以.
Hadoop包下载后,解压放着,先暂且不管.
$ sudo apt-get install ssh $ sudo apt-get install rsync
ssh免密码操作
在本地生成密钥,将master,node1,node2的公钥添加到/.ssh/authorized_key文件中,一行一个,若是没有该文件,自己生成一个即可.
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
因为通常我们是在master上启动hadoop,所以只要master上有node1,node2的公钥,就可以免密码登陆node1和node2了,你可以在另外的节点上重复以上操作来实现更多的免密码登陆
其他操作
建议在系统环境变量中添加一行(即/etc/profile)
export HADOOP_PREFIX=/usr/hadoop/hadoop-2.7.1 #路径为hadoop文件实际所在的路径
加入后source /etc/profile
刷新系统环境变量
配置修改
这部分讲的都是hadoop目下,etc/hadoop/下的文件,部分是来自官网文档中提到的
hadoop.env.sh
修改JAVA_HOME,改成你实际的JDK路径
你可以选择不修改,但若是运行是出现找不到jdk的错误时,再回来修改.
core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property></configuration>
配置为NameNode所在的http地址
hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property></configuration>
官网介绍
yarn-site.xml
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>master:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:8088</value> </property><!-- Site specific YARN configuration properties --></configuration>
地址都指向master
mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>hmaster:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>hmaster:19888</value> </property></configuration>
实际上是没有这个文件的,你可以通过复制 mapred-site.xml.template文件生成一个,然后再修改.这么做的原因是,我发现修改 mapred-site.xml.template文件是没有用的,实际上并没有生效,而网上很多前辈都是说,修改 mapred-site.xml文件的,所以我猜测在读取配置的时候读取的是 mapred-site.xml文件,而不是 mapred-site.xml.template文件.至于hadoop为什么放一个 mapred-site.xml.template文件,这就不是很清楚了.
这样改完之后,启动historyserver就可以看到Application了,没改之前,我一直看不到.
slaves
只要简单的加入
node1node2
这两行就可以了,之后就可以通过脚本一次启动集群,而不用一个节点一个节点的启动了.
启动
在真正运行之前,需要执行一行代码,将master上的hdfs转为NameNode的格式
$ HADOOP_PREFIX/bin/hdfs namenode -format#然后就可以启动了$ HADOOP_PREFIX/sbin/start-all.sh #尽管已经被desperated了,但暂时目前还是可用的#或者用官方推荐的方式启动$ HADOOP_PREFIX/sbin/start-dfs.sh #启动hdfs$ HADOOP_PREFIX/sbin/start-yarn.sh #启动yarn#此外启动historyserver的命令如下$ HADOOP_PREFIX/sbin/mr-jobhistory-daemon.sh start historyserver
如果要停止的话,把上述命令中的start,改为stop就可以了
运行使用
在hdfs中创建了文件目录,填入你创建的用户名,这里我用的是hadoop
$ bin/hdfs dfs -mkdir /user$ bin/hdfs dfs -mkdir /user/<username>$ bin/hdfs dfs -put etc/hadoop input #将文件放入input目录下$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar grep input output 'dfs[a-z.]+' #执行官方提供的grep方法,从input中读取,输出到output$ bin/hdfs dfs -get output output #讲输出从hdfs上输出到本地
上诉也可用另一个wordcount函数来测试,将第四行命令改为$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount input output
即可
另外删除语句为$ bin/hdfs dfs -rm -r input
,input是指目录
输出包含两个文件part-r-00000
,_SUCCESS
,在part-r-00000
文件中可以看到计算的结果,例如
(string, 1(which 109, 11 110 12015 15 45x10=50 1Again 1An 1And 2Another 1Are 1But 1CPU 1Do 1Don’t 1Elasticsearch 3Fields 2First 1For 4Future 1Grand 1Here 1However 1I 3If 3In 3Index 1Lucene 7One 1Or 1Otherwise 1Otherwise, 1Scores 1Sparse 1...
若有啰嗦之处还望见谅~
本文为作者原创,请勿随意转载(大牛们必然不会如此啰嗦~~),谢谢.
- Hadoop集群部署(基于2.7.1)
- 批量部署Hadoop集群环境(1)
- hadoop-2.7.4集群部署
- Hadoop集群实践-完整Hadoop分布式集群部署ubuntu-16.04.1+hadoop-2.7.3
- Hadoop 2.7.3 高可用(HA)集群部署
- Hadoop集群部署配置文档(第1部分)
- 分布式系统学习:Hadoop集群部署(1)
- (11)Hadoop 2.6.1 集群部署---手工切换HA
- (12)Hadoop 2.6.1 集群部署---自动切换HA
- hadoop学习记(1)--集群安装部署
- Linux Hadoop 2.7.3 集群部署
- hadoop-2.7.4-翻译文档-集群部署
- Hadoop集群部署(完全版)
- hadoop 集群安装(二) HA部署
- 集群上部署hadoop
- hadoop集群部署lzo
- hadoop集群部署
- Hadoop 集群部署介绍
- 文件的上传和下载
- 关于“约瑟夫环”的php的几种写法
- Android三种播放视频的方式
- [Elasticsearch] 控制相关度 (五) - function_score查询及field_value_factor,boost_mode,max_mode参数
- 【工作日志】第0002天工作
- Hadoop集群部署(基于2.7.1)
- nginx解压gzip格式的请求
- LaTeX 图片色偏解决方法
- #学习笔记#(20)贪吃蛇H5
- Android中调用System.exit(0)和android中finish()与system.exit(0)的区别
- 图解正向代理、反向代理、透明代理
- Android的TextView中显示不同大小字体的玩法
- webconfig和iis的设置
- 数据库设计规范