最近在读《 Hadoop The Definitive Guide》一书,为了运行书上的示例程序,在虚拟机上搭建了Hadoop伪分布式环境,于是记下其过程。
Hadoop伪分布式环境搭建
- 安装JDK配置环境变量,安装ssh配置免密登录。
安装Hadoop:
12cd ~/downloadtar -zxvf ./hadoop-2.7.3.tar.gz -C /usr/local伪分布式配置
修改配置文件 :./etc/hadoop/core-site.xml
1234567891011<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>修改配置文件 :
./etc/hadoop/hdfs-site.xml
1234567891011121314<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,否则在接下来的步骤中可能会出错。
启动Hadoop
123cd ${HADOOP_HOME}./bin/hdfs namenode -format./sbin/start-dfs.sh运行WordCount示例:
12345./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目录不能存在,否则会报错。这是为了防止数据丢,比如新的任务结果覆盖了耗时很长的久任务结果,这往往是人们不愿意看到的。
- 启动YARN
修改重命名配置文件./etc/hadoop/mapred-site.xml.template
:1mv ./etc/hadoop/mapred-site.xml.template ./etc/hadoop/mapred-site.xml
增加以下配置:
修改./etc/hadoop/yarn-site.xml
:
启动YARN,需要先执行./sbin/start-dfs.sh
至此,Hadoop伪分布式环境已经搭建完毕了~