1. 设置免密登录
伪分布式搭建过程中会涉及各种管理员权限,一次一次输入密码太过麻烦,我们要求各集群间免密码连接
sudo apt-get install openssh-server #安装openssh-server
ssh localhost #连接到主机
exit # 退出刚才的 ssh localhost
cd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa # 会有提示,都按回车就可以
cat ./id_rsa.pub >> ./authorized_keys # 加入授权
此时再用 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
,大家根据个人情况配置
<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>
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
,否则在接下来的步骤中可能会出错。
<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>
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根目录下)
#重命名
mv ./etc/hadoop/mapred-site.xml.template ./etc/hadoop/mapred-site.xml
#编辑文件配置
vi ./etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
II. 配置yarn-site.xml
#编辑文件配置
vi ./etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
III. 启动yarn
./sbin/start-yarn.sh # 启动YARN
./sbin/mr-jobhistory-daemon.sh start historyserver # 开启历史服务器,才能在Web中查看任务运行情况
IV. 关闭yarn
./sbin/stop-yarn.sh
./sbin/mr-jobhistory-daemon.sh stop historyserver
10. 利用yarn查看任务运行
启动 YARN 之后,运行实例的方法还是一样的,仅仅是资源管理方式、任务调度不同。观察日志信息可以发现,不启用 YARN 时,是 “mapred.LocalJobRunner”
在跑任务,启用 YARN 之后,是 “mapred.YARNRunner”
在跑任务。启动 YARN 有个好处是可以通过 Web 界面查看任务的运行情况: