本文介绍的主要是 Hadoop 的伪分布式的搭建以及遇到的相关问题的解决,做一下记录,jdk 的安装这里就不做太多的介绍了,相信大家根据网上的安装介绍很快就能安装成功。 |
操作系统 | Oracle VM VirtualBox-rhel-6.4_64 | |
本机名称 | yanduanduan | |
本机 IP | 192.168.1.102 | |
JDK | 1.7.0_79 | |
hadoop | 2.7.3 | 点此下载 |
Hadoop 有两个主要版本,Hadoop 1.x.y 和 Hadoop 2.x.y 系列,比较老的教材上用的可能是 0.20 这样的版本。Hadoop 2.x 版本在不断更新,本教程均可适用。如果需安装 0.20,1.2.1 这样的版本,本教程也可以作为参考,主要差别在于配置项,配置请参考官网教程或其他教程。如果用的 jdk 为 1.8.x, 本教程同样适用。 |
解压到 / usr/local / 目录下
vi /etc/profile
maven、jdk、Hadoop 所有添加的相关配置如下:
- 1 #set java enviroment
- 2export JAVA_HOME=/usr/local/jdk7
- 3export HADOOP_HOME=/usr/local/hadoop
- 4export PATH=.:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH
- 5export classpath=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
- 6HADOOP_OPT="-Dfile encoding=UTF-8" 7
- 8MAVEN_HOME=/usr/local/maven3
- 9 export MAVEN_HOME
- 10export PATH=${PATH}:${MAVEN_HOME}/bin
- 11
- 12export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
- 13
- 14export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
如果只是针对 Hadoop 则只加入如下配置
- 1export HADOOP_HOME=/usr/local/hadoop
- 2export PATH=.:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH
- 3
- 4export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
- 5export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
命令行输入命令
- 1hadoop version
成功则显示
- 1Hadoop 2.7.32Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r baa91f7c6bc9cb92be5982de4719c1c8af91ccff
- 3Compiled by root on 2016-08-18T01:41Z
- 4Compiled with protoc 2.5.05 From source with checksum 2e4ce5f957ea4db193bce3734ff29ff4
- 6This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-2.7.3.jar
大家要是在这一步没有成功,可以考虑换个目录安装 Hadoop,可以和我一样在 / usr/local 目录下安装,或者是在根目录下其他可以访问的目录下安装。看好你啊。 |
至此,Hadoop 安装完成。
Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。 |
Hadoop 的配置文件位于 /$HADOOP_HOME/etc/hadoop/ 中,伪分布式至少需要修改 2 个配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop 的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。
- 1vi /etc/hosts
添加到最后一行
- 1192.168.1.102 yanduanduan
- 1
- 2
- 3
- 4hadoop.tmp.dir 5file:/usr/local/hadoop/tmp 6Abaseforother temporary directories. 7 8
- 9
- 10fs.defaultFS11hdfs://yanduanduan:9000</value>
- 1213
- 14
- 1
- 2
- 3dfs.replication 41 5 6
- 7
- 8dfs.namenode.name.dir 9file:/data/dfs/name1011
- 12
- 13dfs.datanode.data.dir14file:/data/dfs/data1516
伪分布式虽然只需要配置 fs.defaultFS 和 dfs.replication 就可以运行(官方教程如此),不过若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行。所以我们进行了设置,同时也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。
修改 mapred-site.xml 文件默认不存在,只有一个模板,复制一份
- 1cp mapred-site.xml.template mapred-site.xml
configration 下添加
- 1
- 2mapreduce.framework.name 3yarn 4 5
- 6mapreduce.jobhistory.address 7master:10020 8 9
- 10mapreduce.jobhistory.webapp.address11master:1988812
- 1
- 2
- 3 4
- 5yarn.nodemanager.aux-services 6mapreduce_shuffle 7 8
- 9yarn.nodemanager.aux-services.mapreduce.shuffle.class10org.apache.hadoop.mapred.ShuffleHandler1112
- 13yarn.resourcemanager.address14yanduanduan:80321516
- 17yarn.resourcemanager.scheduler.address18yanduanduan:80301920
- 21yarn.resourcemanager.resource-tracker.address22yanduanduan:80352324
- 25yarn.resourcemanager.admin.address26yanduanduan:80332728
- 29yarn.resourcemanager.webapp.address30yanduanduan:80883132
将原有的注释掉,改为绝对路径
- 1#export JAVA_HOME = $ {
- JAVA_HOME
- }
- 2 export JAVA_HOME = "/usr/local/jdk7"
- 1[hadoop@yanduanduan hadoop]$ hdfs namenode –format
进入该目录
- 1/usr/local/hadoop/sbin
输入命令
- 1./start-all.sh
输入 jps 命令
- 110514 Jps
- 28706 SecondaryNameNode
- 38528 DataNode
- 48382 NameNode
- 59158 NodeManager
- 68866 ResourceManager
如果少了哪一个就要看日志了。
用命令查看日志
- 1cat /usr/local/hadoop/logs/hadoop-root-namenode-yanduanduan.log
显示如下
- 12017-05-30 16:32:22,517 INFO org.mortbay.log: Stopped HttpServer2$SelectChannelConnectorWithSafeStartup@0.0.0.0:50070 22017-05-30 16:32:22,517 WARN org.apache.hadoop.http.HttpServer2: HttpServer Acceptor: isRunning isfalse. Rechecking.
- 32017-05-30 16:32:22,517 WARN org.apache.hadoop.http.HttpServer2: HttpServer Acceptor: isRunning isfalse
- 42017-05-30 16:32:22,518 INFO org.apache.hadoop.metrics2.impl.MetriCSSystemImpl: Stopping NameNode metrics system...
- 52017-05-30 16:32:22,519 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: NameNode metrics system stopped.
- 62017-05-30 16:32:22,519 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: NameNode metrics system shutdown complete.
- 72017-05-30 16:32:22,519 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: Failed to start namenode.
- 8 java.io.IOException: NameNode is not formatted.
- 9at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:225)
- 10at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:975)
- 11at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:681)
- 12at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:585)
- 13at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:645)
- 14at org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:812)
- 15at org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:796)
- 16at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1493)
- 17at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1559)
- 182017-05-30 16:32:22,522 INFO org.apache.hadoop.util.ExitUtil:Exiting with status 1 注:1代表失败,0代表成功。
- 192017-05-30 16:32:22,524 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: SHUTDOWN_MSG:
- 20 /************************************************************
- 21 SHUTDOWN_MSG: Shutting down NameNode at yanduanduan/192.168.1.102
- 22 ************************************************************/
解决办法
删除 core-site.xml 配置文件中配置的 tmp 目录下的所有文件;
将 hadoop 所有服务停止;
再次启动 hadoop。
详细参考
发现无法访问,本地可以访问.
锦囊妙计:
本机直接访问 50070 是可以访问到,但是别的机子 ip:端口无法访问到,原因是装了 Hadoop 的机子的防火墙是打开的,将防火墙关闭即可访问。关闭防火墙方法: 查看防护墙状态 service iptables status 关闭 service iptables stop 查看防火墙开机启动状态 chkconfig iptables --list 关闭开机启动 chkconfig iptables off
再次访问就可以了
来源: http://www.cnblogs.com/yanduanduan/p/6921051.html