1. 设置免密登录
伪分布式搭建过程中会涉及各种管理员权限,一次一次输入密码太过麻烦,我们要求各集群间免密码连接
此时再用 ssh localhost 命令,无需输入密码就可以直接登陆了,如下图所示。
2. 安装Java环境
见前文
3. 安装 Hadoop
安装配置见前文
4. 伪分布式配置
Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。
Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/中,伪分布式需要修改2个配置文件 core-site.xml和 hdfs-site.xml。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。
I. 修改core-site.xml
主要设置tmp的路径和站点,我的hadoop安装路径是/usr/local/hadoop,大家根据个人情况配置
II. 修改hdfs-site.xml
reliication指定副本数,默认3个,伪分布式虽然只需要配置fs.defaultFS和 dfs.replication就可以运行(官方教程如此),不过若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行。所以我们进行了设置,同时也指定 dfs.namenode.name.dir和 dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。
5. NameNode 的格式化:
建议大家可以把hadoop环境变量配置在~/.bashrc中,以后执行命令式不用每次到bin下或者使用绝对路径
格式化之后系统会读取配置文件,在指定路径下生成对应文件,具体变化可以前往日志文件中查看。
./bin/hdfs namenode -format
如果运行结果中出现/dfs/name has been successfully formatted等字眼或者Exiting with status 0表示成功,linux当中0表示True,否则可能是配置有问题,需要重新编写并格式化(不推荐直接重新格式化,实在需要操作的话尽量先删除之前的数据)
6. 开启 NameNode 和 DataNode 守护进程。
可以通过start-dfs.sh直接执行,也可以通过 sbin/hadoop-daemon.sh start name执行
./sbin/start-dfs.sh #start-dfs.sh是个完整的可执行文件,中间没有空格
7. 启动情况查看 :jps
如果发现DataNode未能启动,可以尝试重启进程或者sbin/hadoop-daemon.sh start datanode手动打开,如果二者过程中皆有异常抛出,建议删除文件重新配置
8. 浏览器查看信息
成功启动后,可以访问 Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。
9. YARN
YARN 是从 MapReduce 中分离出来的,负责资源管理与任务调度。YARN 运行于 MapReduce 之上,提供了高可用性、高扩展性,
上述通过 ./sbin/start-dfs.sh 启动 Hadoop,仅仅是启动了 MapReduce 环境,我们可以启动 YARN ,让 YARN 来负责资源管理与任务调度。
(伪分布式不启动 YARN 也可以,一般不会影响程序执行)I. 修改mapred-site.xml
首先修改配置文件 mapred-site.xml,这边需要先进行重命名(在hadoop根目录下)
II. 配置yarn-site.xml
III. 启动yarn
IV. 关闭yarn
10. 利用yarn查看任务运行
启动 YARN 之后,运行实例的方法还是一样的,仅仅是资源管理方式、任务调度不同。观察日志信息可以发现,不启用 YARN 时,是 “mapred.LocalJobRunner”在跑任务,启用 YARN 之后,是 “mapred.YARNRunner”在跑任务。启动 YARN 有个好处是可以通过 Web 界面查看任务的运行情况: