
hadoop-2.7.2单机伪集群部署
概述
Hadoop 可以单机独立运行,也可以单机伪集群方式后台运行,然后将 Hive、Spark 接入运行,适合平时开发测试使用。伪集群方式部署需要将 DataNode、ResourceManager、NodeManager、NameNode 这几个服务启动,相比于真正集群方式启动少了 JournalNode、DFSZKFailoverController、Zookeeper,占用内存资源更少,更快将单机环境搭建好。
参考官方文档 Apache Hadoop 2.7.2 – Hadoop: Setting up a Single Node Cluster.
准备安装包
链接:https://archive.apache.org/dist/hadoop/core/hadoop-2.7.2/hadoop-2.7.2.tar.gz
解压到服务器的 /home/server/hadoop-2.7.2
在 /home/server/hadoop-2.7.2 路径下创建 tmp 文件夹(用来做 hadoop 的临时文件夹)
mkdir -p /home/server/hadoop-2.7.2/tmp/logs
设置环境变量
编辑 /etc/bashrc
将 hadoop 的目录写进 PATH 环境变量中
# hadoop
export HADOOP_HOME=/home/server/hadoop-2.7.2
修改主机名以及/etc/hosts
建议将本机设置成master,虽然说直接用ip,不用主机名也可以,但也仅限于对部署hadoop可以,后续基于这一套hadoop再去部署其他的中间件(比如Hive、Spark等),就会出现各种各样的问题,所以建议还是设置主机名和ip的映射
设置主机名
sudo hostnamectl set-hostname master
修改 /etc/hosts
192.168.1.111 master
准备系统 hadoop 账号
为了方便,下面的一切操作都用 hadoop 账号进行操作,如果您已经有了 hadoop 账号,可以直接切换成 hadoop 账号进行后续的操作,如果还没有,可以按下面方式创建
# 创建账号
sudo useradd hadoop -m -s /bin/bash
# 设置密码
sudo passwd hadoop
配置本机免密登陆
测试是否可以免密登陆 ssh localhost,如果没有提示需要输入密码,那就是可以免密登陆。
如果还不可以免密登陆,可以按下面方式设置
1、进入 ~/.ssh 目录,没有这个目录就手动创建
2、执行 ssh-keygen -t rsa 生成密钥,可以看到 ~/.ssh 目录下生成了 id_rsa、id_rsa.pub 这两个文件
3、执行 ssh-copy-id hadoop@localhost,可以看到 ~/.ssh 目录下的 authorized_keys 文件中已经有了 hadoop 账号登陆 localhost 的公钥
4、再试试 ssh localhost 就可以免密登陆了
修改配置文件
core-site.xml
修改 etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
</configuration>
hdfs-site.xml
修改 etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!-- 重新设置临时目录位置 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/server/hadoop-2.7.2/tmp</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/name</value>
</property>
</configuration>
mapred-site.xml
修改 etc/hadoop/mapred-site.xml(如果没有这个文件,那就从 mapred-site.xml.template 复制一份)
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml
修改 etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/usr/local/hadoop-2.7.2/tmp/nm-local-dir</value>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>/usr/local/hadoop-2.7.2/tmp/logs</value>
</property>
</configuration>
启动 hdfs
初始化
./bin/hdfs namenode -format
启动
./sbin/start-dfs.sh
启动 yarn
./sbin/start-yarn.sh
测试
测试访问 yarn web 页面
http://ip:8088/
测试访问 hdfs web 页面
http://ip:50070/
测试跑任务
1、hdfs 创建 input 目录
./bin/hdfs dfs -mkdir /input
2、将 hadoop 的配置文件当作测试数据,上传到 hdfs 中
./bin/hdfs dfs -put etc/hadoop /input
3、运行测试用例
./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep /input/hadoop /output 'dfs[a-z.]+'
4、查看输出
./bin/hdfs dfs -ls /
可以看到有 output 文件夹,里面有_SUCCESS、part-r-00000 两个文件