搭建Hadoop开发环境

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lu__peng/article/details/78577221

刚刚开始学习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 DataNode
18456 Jps
17800 TaskTracker
17178 NameNode
17547 SecondaryNameNode
17647 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 = 1193264756
	at 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





猜你喜欢

转载自blog.csdn.net/lu__peng/article/details/78577221