Hadoop伪分布式的搭建
- 所谓伪分布式 就是在一台机器上搭建集群的所有节点。
- 其实伪分布式和分布式的搭建方式是一样的,除了slave以外所有的配置都是一样的。在安装过程中我会提出
- 本示例以Centos 64位操作系统,hadoop2.7.5为示例。
下载hadoop安装包
- 如果你使用的Linux操作系统是32位的,去官网下载编译好的二进制包即可。
- 如果你使用的Linux操作系统是64位的,hadoop2.7.5 64位下载地址[download],这是我编译好的。
- 如果你想要自己编译,请参照我的另一篇博客:Hadoop 64位编译
关闭防火墙
Centos6
sudo service iptables start/stop/status
sudo chkconfig iptables off/--list –永久关闭防火墙
Centos7
sudo systemctl stop/start/status firewalld.service
sudo systemctl disable firewalld.service –永久关闭防火墙
修改hosts文件
这里一定要配置,而且必须是hostname 和 ip 的对应关系。 因为hadoop底层有通过hostname 来进行对ip的访问的。再者就是方便我我们安装部署时方便。
添加主机名和ip的映射
192.168.174.111 hdfs01
集群的服务器之间免密登录策略
免密策略很重要,对于伪分布式而言,可能重要性不大,因为启动的节点少,可能只需要输入两次密码即可,但对于多节点的分布式集群,输入密码就不合理了,所以免密是一点要配置的。
ssh_keygen –t rsa 一路回车,什么都不输入
ssh-copy-id USER@IP yes PASSWORD 配置设备免密
sudo service sshd start/stop/status/restart
chkconfig sshd on 设置SSH开机启动
如果没有安装ssh,使用如下命令安装
yum install ssh
修改配置文件(伪分布式需要修改5个配置文件,hadoop2.X的配置文件在$HADOOP_HOME/etc/hadoop/)
File1:hadoop-env.sh
vim hadoop-env.sh
#第27行
export JAVA_HOME=/opt/jdk1.8.0_131
File2:core-site.xml
<!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 -->
<property>
<name>fs.defaultFS</name>
<!--uri-->
<value>hdfs://hdfs01:9000</value><!-- 这里的hdfs01就是hosts中配置的,如果没有配置就要写ip的 -->
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/data/</value>
</property>
# 在/opt目录下创建data目录
mkdir -p /opt/data
File3:hdfs-site.xml
<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
File4:mapred-site.xml.template
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
File5:yarn-site.xml
<!-- 指定YARN的老大(ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hdfs01</value>
</property>
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
File6:slaves
添加datanode的节点的IP 或者是hostname(前提是提前配置好hosts)
hdfs01
slaves下配置的ip的机器上,将会启动datanode和nodemanager进程
如果你配置的是分布式集群,那就把其他的机器都配置在这里(如果是分布式,最好不要配置namenode节点。),但是不要忘记hosts哦
hdfs02
hdfs03
...
将hadoop添加到环境变量中
# vim /etc/proflie
export HADOOP_HOME=/opt/hadoop-2.7.5
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
# source /etc/profile
格式化namenode(是对namenode进行初始化)
# hdfs namenode -format (hadoop namenode -format)
启动hadoop
先启动HDFS
# start-dfs.sh
再启动YARN
# start-yarn.sh
验证是否启动成功
--------------
使用jps命令验证
27408 NameNode
28218 Jps
27643 SecondaryNameNode
28066 NodeManager
27803 ResourceManager
27512 DataNode
监控页面
http://192.168.174.111:50070 (HDFS管理界面)
http://192.168.174.111:8088 (MR管理界面)
执行一个hadoop自带的例子
# cd $HADOOP_HOOME/share/hadoop/mapreduce
hadoop jar hadoop-mapreduce-examples-2.7.5.jar pi 2 2
这是一个求π值的一个例子
后面2个数字参数的含义:
第1个2指的是要运行2次map任务
第2个2指的是每个map任务,要投掷多少次