搭建Hadoop开发环境

来源:互联网 发布:铜仁家长网校软件下载 编辑:程序博客网 时间:2024/05/29 09:00

刚刚开始学习Hadoop,遇到了一些问题,记录下来

一 搭建Hadoop开发环境

需要配置./conf/目录下的几个主要文件:core-site.xml,mapred-site.xml,hdfs-site.xml,hadoop-env.sh 

1). 修改core-site.xml:

<configuration><property>            <name>fs.default.name</name>            <value>hdfs://localhost:9000</value>        </property></configuration>

2). 修改mapred-site.xml:

<configuration>    <property>        <name>mapred.job.tracker</name>        <value>localhost:9001</value>    </property></configuration>

3). 修改hdfs-site.xml

<configuration>    <property>        <name>dfs.replication</name>        <value>1</value>    </property></configuration>

4). 在hadoop-env.sh 添加JAVA_HOME

export JAVA_HOME=jdk目录
二 格式化以及遇到的问题

1)格式化Hadoop的文件系统HDFS,在Hadoop目录下,输入命令

bin/hadoop namenode -format
2)启动Hadoop

输入命令:

bin/start-all.sh 
该命令启动Hadoop所需的所有进程,启动成功后,输入jps命令可以看到如下界面

17379 DataNode18456 Jps17800 TaskTracker17178 NameNode17547 SecondaryNameNode17647 JobTracker
3)启动时遇到的问题:

没有启动DataNode进程,查看日志如下:

2017-11-19 20:50:36,804 WARN org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Source name ugi already exists!2017-11-19 20:50:37,294 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /tmp/hadoop-lupeng/dfs/data: namenode namespaceID = 122682590; datanode namespaceID = 1193264756at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:232)at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:147)at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:414)at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:321)at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1712)at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1651)at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1669)at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:1795)at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1812)

这是因为,我在搭建Hadoop环境时,多次进行了格式化bin/hadoop namenode -format命令,解决办法是:删除/tmp/hadoop-username/dfs/data/目录下的所有文件。


没有启动TaskTracekerj进程,查看日志如下:

2017-11-19 20:50:41,737 ERROR org.apache.hadoop.mapred.TaskTracker: Can not start task tracker because java.net.BindException: 地址已在使用at sun.nio.ch.Net.bind0(Native Method)at sun.nio.ch.Net.bind(Net.java:433)at sun.nio.ch.Net.bind(Net.java:425)at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)at org.mortbay.jetty.nio.SelectChannelConnector.open(SelectChannelConnector.java:216)at org.apache.hadoop.http.HttpServer.start(HttpServer.java:602)at org.apache.hadoop.mapred.TaskTracker.<init>(TaskTracker.java:1616)at org.apache.hadoop.mapred.TaskTracker.main(TaskTracker.java:3937)
这是因为,上次关闭Hadoop时,一些进程没有停止,解决办法是:停掉Hadoop,找到没有正常关闭的进程利用kill指令停止目标进程:

ps -aux | grep "hadoop"kill -9 process_ID





原创粉丝点击