记录艰难的Hadoop环境搭建过程

最近在读《 Hadoop The Definitive Guide》一书,为了运行书上的示例程序,在虚拟机上搭建了Hadoop伪分布式环境,于是记下其过程。

Hadoop伪分布式环境搭建

  1. 安装JDK配置环境变量,安装ssh配置免密登录。
  2. 安装Hadoop:

    1
    2
    cd ~/download
    tar -zxvf ./hadoop-2.7.3.tar.gz -C /usr/local
  3. 伪分布式配置
    修改配置文件 : ./etc/hadoop/core-site.xml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <configuration>
    <property>
    <name>hadoop.tmp.dir</name>
    <value>file:/usr/local/hadoop/tmp</value>
    <description>Abase for other temporary directories.</description>
    </property>
    <property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
    </property>
    </configuration>
  4. 修改配置文件 : ./etc/hadoop/hdfs-site.xml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <configuration>
    <property>
    <name>dfs.replication</name>
    <value>1</value>
    </property>
    <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/usr/local/hadoop/tmp/dfs/name</value>
    </property>
    <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    </property>
    </configuration>

Hadoop配置文件说明

Hadoop 的运行方式是由配置文件决定的(运行 Hadoop 时会读取配置文件),因此如果需要从伪分布式模式切换回非分布式模式,需要删除 core-site.xml 中的配置项。

此外,伪分布式虽然只需要配置 fs.defaultFS 和 dfs.replication 就可以运行(官方教程如此),不过若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行。所以我们进行了设置,同时也指定 dfs.namenode.name.dir 和dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。

  1. 启动Hadoop

    1
    2
    3
    cd ${HADOOP_HOME}
    ./bin/hdfs namenode -format
    ./sbin/start-dfs.sh
  2. 运行WordCount示例:

    1
    2
    3
    4
    5
    ./bin/hdfs dfs -mkdir -p /user/hadoop # 创建HDFS目录
    ./bin/hdfs dfs -mkdir input
    ./bin/hdfs dfs -put etc/hadoop/*.xml input # 将配置文件作为输入
    ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'
    ./bin/hdfs dfs -cat output/* # 查看输出结果

运行Hadoop程序时output目录不能存在,否则会报错。这是为了防止数据丢,比如新的任务结果覆盖了耗时很长的久任务结果,这往往是人们不愿意看到的。

  1. 启动YARN
    修改重命名配置文件 ./etc/hadoop/mapred-site.xml.template
    1
    mv ./etc/hadoop/mapred-site.xml.template ./etc/hadoop/mapred-site.xml

增加以下配置:

1
2
3
4
5
6
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

修改./etc/hadoop/yarn-site.xml

1
2
3
4
5
6
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

启动YARN,需要先执行./sbin/start-dfs.sh

1
./sbin/start-yarn.sh

至此,Hadoop伪分布式环境已经搭建完毕了~

坚持原创技术分享,您的支持将鼓励我继续创作!