Hadoop2.2配置详解
来源:互联网 发布:最近淘宝生意很差2017 编辑:程序博客网 时间:2024/05/18 15:55
原创文章,转载请注明: 转载自 镜中影的技术博客
本文链接地址: Hadoop2.2配置详解
URL:http://blog.csdn.net/linkpark1904/article/details/50790906
hadoop,著名的云计算平台,在google发布了GFS,Mapreduce,Bigtable之后,社区的大牛们在这三篇论文思想的基础上,搭建了hadoop这个大的云计算平台,其中hdfs,hadoop-mapreduce,hbase分别对应谷歌的三篇论文的具体实现。在离线应用上,hadoop平台被广泛应用,作为一个开源平台是相当不错的。
一次机缘巧合,有幸在实验室接触hadoop,利用实验室现有的硬件资源,在多机环境下搭建了hadoop平台,这里把我搭建的过程分享一下。
一、准备工作
1.1 java环境准备
由于hadoop需要运行在java环境下,所以,java环境是必须的,需要安装jdk,最好不要用linux上自带的openjdk,需要用oracle官网提供的jdk才行。
下载jdk网址为:http://www.oracle.com/technetwork/java/javase/downloads/index.html
安装方法请自行参阅官网或者网上资料。
1.2 hadoop2.2安装环境准备
Hadoop2.2 源码下载地址为:http://apache.claz.org/hadoop/common/hadoop-2.2.0/
注意其中的几个文件,凡是带有src的都是hadoop2.2的源码文件,是没有编译过的,其中的hadoop-2.2.0.tar.gz是已编译过的文件,不过,该文件是在32位操作系统下的编译文件,在64位系统下是用不了的,所以若是在64位系统下需要重新编译源码文件,生成已编译的hadoop-2.2.0.tar.gz,再开始hadoop的配置,本文不对hadoop的编译流程做赘述,怎么在64位环境下编译hadoop请自行参阅官网,或网上相关资料。另外最新的hadoop-2.4.0我也试过,编译安装方法和hadoop2.2基本一模一样。
1.3 无密码ssh登陆
Hadoop的namenode节点和datanode节点的访问均是通过ssh,所以在配置hadoop之前需要配置无密码ssh登陆。
我们这里搭建的集群包括三台机器:
192.168.1.51 Ipppc-test-51 namenode OpenSUSE 11 x64
192.168.1.52 Ippc-test-52 datanode OpenSUSE 11 x64
192.168.1.54 Ippc-test-54 datanode OpenSUSE 11 x64
1.3.1 设置localhost的无密码ssh登陆
在~目录下,会有一个隐藏的.ssh目录,配置localhost无密码ssh登陆过程如下所示:
进入.ssh文件夹ssh-keygen -t rsa 之后一路回 车(产生秘钥)新建文件authorized_keys。把id_rsa.pub 追加到授权的 key 里面去(cat id_rsa.pub >> authorized_keys)重启 SSH 服 务命令使其生效 :service sshd restart。
验证无密码登陆是否成功
1.3.2 远程无密码ssh登陆
进入192.168.1.51的.ssh目录,将该目录下的authorized_keys追加到远程机器的.ssh目录下的authorized_keys文件中,具体做法如下:
scp authorized_keys root@192.168.1.52:~/.ssh/ authorized_keys_from_51cat authorized_keys_from_c51 >> authorized_keys
验证一下在192.168.1.51机器上的远程登陆
1.3.3 host设置(这一步也可以跳过)
可以在各个机器之间增加host设置,修改/etc/hosts文件内容如下:
192.168.1.51 ipppc-test-51.site ipppc-test-51192.168.1.52 ipppc-test-52192.168.1.54 ippc-test-54
1.3.4 防火墙问题
有关防火墙,这里可以进行设置,开放hadoop所需的端口,为了方便,我们这里将防火墙关闭了。
ipppc-test-51:~# SuSEfirewall2 stop
二、 正式配置
2.1 配置前的准备
解压hadoop到相应的用户目录下,这里我们选择root用户,所以将hadoop解压到root的根目录下。
配置之前需要在根目录下新建几个文件夹
~/dfs/name~/dfs/data~/tmp
涉及到的hadoop配置文件有7个:
~/hadoop-2.2.0/etc/hadoop/hadoop-env.sh~/hadoop-2.2.0/etc/hadoop/yarn-env.sh~/hadoop-2.2.0/etc/hadoop/slaves~/hadoop-2.2.0/etc/hadoop/core-site.xml~/hadoop-2.2.0/etc/hadoop/hdfs-site.xml~/hadoop-2.2.0/etc/hadoop/mapred-site.xml~/hadoop-2.2.0/etc/hadoop/yarn-site.xml
以上配置文件个别不存在,可以复制相应的template文件获得。
2.2 配置文件的编写
在hadoop中,所以的配置xml文件均是由以下结构组成:
<property> <name>fs.defaultFS</name> <value>hdfs://192.168.1.51:9000</value> </property>
Name节点的值为需要配置的项,value为相应配置项的内容。
配置文件具体信息含义详见官网
配置文件1:hadoop-env.sh
修改JAVA_HOME的值:
# The java implementation to use.export JAVA_HOME=/usr/java/jdk1.7.0_45
配置文件2:yarn-env.sh
修改JAVA_HOME的值
# some Java parametersexport JAVA_HOME=/usr/java/jdk1.7.0_45
配置文件3:slaves(这个文件保存所有slave节点)
192.168.1.52192.168.1.54
配置文件4:core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://192.168.1.51:9000</value> </property> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/root/tmp</value> </property> <property> <name>hadoop.proxyuser.hduser.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.hduser.groups</name> <value>*</value> </property></configuration>
配置文件5:hdfs-site.xml
<configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>192.168.1.51:9001</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/root/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/root/dfs/data</value> </property> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property></configuration>
配置文件6:mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>192.168.1.51:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>192.168.1.51:19888</value> </property></configuration>
配置文件7: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>192.168.1.51:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>192.168.1.51:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>192.168.1.51:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>192.168.1.51:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>192.168.1.51:8088</value> </property></configuration>
2.3 复制到其他节点
这里可以写一个shell脚本来执行复制操作:我们的集群里面全部是64位操作系统,所以可以直接将192.168.1.51上的hadoop直接复制到192.168.1.52和192.168.1.54机器上
#!/bin/bashscp -r /root/dfs root@192.168.1.52:/rootscp -r /root/hadoop-2.2.0 root@192.168.1.52:/rootscp -r /root/dfs root@192.168.1.54:/rootscp -r /root/hadoop-2.2.0 root@192.168.1.54:/root
2.4 启动验证
进入安装目录:cd ~/hadoop-2.2.0/
格式化namenode: ./bin/hdfs namenode –format
启动hdfs: ./sbin/start-dfs.sh
此时在192.168.1.51上运行的进程有包括namenode secondarynamenode的进程,而在192.168.1.52 上运行的进程有包括datanode的进程.
能够证明dfs启动起来了。
给出几个简单的例子:
1.查看集群状态:./bin/hdfs dfsadmin –report
2.查看文件块组成: ./bin/hdfsfsck / -files -blocks
3.查看HDFS: http://192.168.1.51:50070
4.查看RM: http:// 192.168.1.51:8088
5.在网页上访问的截图如下所示:
三、 可能遇到的问题
1、多次格式化namenode之后,可能datanode启动不起来。解决办法,找到配置文件hdfs-site.xml中的配置项:
<property> <name>dfs.datanode.data.dir</name> <value>file:/root/dfs/data</value> </property>
清空对应的/root/dfs/data目录的内容,重启hadoop即可
2、 启动hadoop之后无法通过网页访问,可能是防火墙拦截了50070端口,关闭防火墙再访问。
四、 hadoop的基本操作
4.1 启动和关闭
启动和关闭的执行脚本均在hadoop目录下的sbin目录下。
Start-dfs.sh Stop-dfs.sh
4.2 基本操作
执行hadoop shell的命令位于hadoop目录下的bin目录下:
执行文件操作的命令式hadoop
查看文件列表
./hadoop fs –ls –R /user
创建目录
./hadoop fs –mkdir /user/program
删除文件
./hadoop fs –rm /user/program/Hello.java
./haddop fs –rm –R /user
上传文件
./hadoop fs –put /root/Hello.java /usr
下载文件
./hadoop fs –get /user/Hello.java /root
查看文件内容
./hadoop fs –cat /usr/Hello.java
- Hadoop2.2配置详解
- Hadoop2.0 配置详解
- hadoop2.2安装配置
- hadoop2.2环境配置
- hadoop2.2环境配置
- hadoop2.x配置 - HistoryServer原理详解
- Hadoop2.x完全分布式配置详解
- Hadoop2.2配置(windows)
- Hadoop2.2.0单节点安装和配置环境图文详解
- Tachyon0.6.4+Spark1.3+hadoop2.6.0 配置教程详解
- Tachyon0.6.4+Spark1.3+hadoop2.6.0 配置教程详解
- Hadoop2.6.2完全分布式集群HA模式安装配置详解
- Hadoop2.6.2完全分布式集群HA模式安装配置详解
- hadoop2.2+hive0.13安装和配置
- Windows下部署/配置/调试hadoop2.2
- 在Hadoop2.2下安装配置Hive
- hadoop2.2.0安装详解
- Hadoop2.x深入详解
- Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
- C#开发ftp客户端遇到550错误
- 以socket连接方式向memcached存储数据
- Hdu 2795
- 出现乱码的原因及改正
- Hadoop2.2配置详解
- V-Play 文档翻译 ListPage
- 设计模式——单例模式
- 深入研究java.lang.ThreadLocal类
- 紫书 p120 第五章例题5-7 丑数
- 深入理解Android之AOP
- Leetcode: 232. Implement Queue using Stacks(JAVA)
- 机器学习中的相似性度量
- 不谈程序,谈发展,推荐一些励志书,也许可以改变你的困境