hadoop 环境搭建要点

版权声明:本文转载自 张晨的专栏(http://blog.csdn.net/zc123456zzc), 转载请保留本声明! https://blog.csdn.net/zc123456zzc/article/details/48860471

1.下载压缩包并解压

2.设置环境变量

在/etc/profile中添加

export JAVA_HOME="/usr/lib/jdk1.8.0_60"
export HADOOP_HOME=/usr/lib/hadoop-1.0.0
export PATH=.:$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

执行 source /etc/profile

3.在conf目录下的配置文件中添加配置项:

mapred-site.xml

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

core-site.xml

<configuration>
    <property>
        <name>fs.default.name</name>
        <value>hdfs://hadoop0:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/lib/hadoop-1.0.0/tmp</value>
    </property>
</configuration>

hdfs-site.xml

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

hadoop-env.xml

export JAVA_HOME="/usr/lib/jdk1.8.0_60"

4.设置免密码登录

ssh-keygen -t rsa
cd ~/.ssh/
cat id_rsa.pub >> authorized_keys

5.启动hadoop

5.1 格式化hdfs

hadoop namenode -format

5.2启动hadoop

start-all.sh

在浏览器中输入http://hadoop0:50030检查mapreduce是否启动成功
输入http://hadoop0:50070检查hdfs是否启动成功

6.错误

通过查看源文件中的core-default.xml文件发现默认namenode、secondary namenode和datanode都会将数据存储在本地根目录下的tmp文件夹下,而这个文件夹下的内容每次重启电脑都会被清空,这样我们就会丢失重要数据。下次开机运行start-all.sh时,就会报下面的错误:


2015-10-03 13:37:07,467 ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed.
30 org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /tmp/hadoop-root/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.
……
2015-10-03 13:37:07,760 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode : org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /tmp/hadoop-root/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.


一个治标不治本的解决方法是重新运行hadoop namenode -format麻烦不说,主要是这个方法无法解决丢失数据的问题。
解决方法就是core-site.xml中添加如下内容覆盖core-default.xml中的值:

 <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/lib/hadoop-1.0.0/tmp</value>
 </property>

然后重新格式化namenode后再启动hadoop。

猜你喜欢

转载自blog.csdn.net/zc123456zzc/article/details/48860471