本文通过参照Hadoop 2.9.1版本的官方文档在本机Ubuntu搭建单机运行Hadoop环境,在搭建好运行Hadoop的环境上运行官方示例来初步了解Hadoop的运行机制以及相关组件组成。
搭建Hadoop伪分布式环境
前提
- 系统支持
目前linux和windows都是支持的平台,推荐大家使用linux。另外hadoop也提供了官方的docker镜像,使用dokcer可以快速的搭建hadoop分布式平台。关于window和docker这里不再赘述,可以通过和
- 预置软件
- 需要安装Java,java版本支持状态需要参照,java安装可以参考
- 安装ssh,运行sshd通过hadoop脚本来管理远端hadoop守护进程
- rsync,文件同步工具可以在不同节点间同步文件
hadoop下载
Hadoop官方下载地址: ,目前最新的稳定版本为2.9.1。
hadoop配置
-
java安装路径指定,在hadoop解压路径下,修改etc/hadoop/hadoop-env.sh脚本指定JAVA安装主路径
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
-
hdfs配置
- etc/hadoop/core-site.xml:
fs.defaultFS hdfs://localhost:9000 - etc/hadoop/hdfs-site.xml
dfs.replication 1
- etc/hadoop/core-site.xml:
-
启动ssh免密码登录
通过ssh localhost命令确认是否可以启动免密码登录,如果不行需要运行下面的命令来启动ssh免密码登录
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsacat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keyschmod 0600 ~/.ssh/authorized_keys
hadoop伪分布式运行
本地运行MapReduce任务指导
-
通过hadoop脚本格式化hdfs文件系统
bin/hdfs namenode -format
-
启动NameNode守护进程和DataNode守护进程
sbin/start-dfs.sh
从运行结果图来看这个脚本启动了NameNode,备NameNode和DataNode。
-
访问NameNode的web管理界面,默认访问地址
-
创建hdfs路径用于运行MapReduce任务,<username>需要替换为当前用户名,mkdir创建目录需要逐级创建。
bin/hdfs dfs -mkdir /userbin/hdfs dfs -mkdir /user/
-
拷贝本地文件到分布式文件系统中
bin/hdfs dfs -put etc/hadoop input
-
运行hadoop官方提供的示例程序
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.1.jar grep input output 'dfs[a-z.]+'
-
获取分布式文件运行的输出文件到本地
bin/hdfs dfs -get output outputcat output/*
总结
通过伪分布式启动Hadoop,可以看到hadoop运行需要HDFS和mapreduce两部分组成,在后面的博客中我们将会详细了解这两部分。