Hadoop 的组成
- Hadoop HDFS:一个高可靠、高吞吐量的分布式文件系统
- Hadoop MapReduce:一个分布式的离线并行计算框架
- Hadoop Yarn:作业调度系统与集群管理框架
- Hdoop Common:支持其他模块的工具模块。
下面我们首先来阐述环境搭建之后开始逐一的回顾上述模块的知识。
Hadoop 的环境搭建
- 将虚拟机的网络模式切换到NAT
- 克隆多台虚拟机
- 修改虚拟机静态ip
1、在终端命令窗口输入下面代码:
vim /etc/udev/rules.d/70-persistent-net.rules
2、进入如下页面操作如下图:
3、修改ip地址:命令为:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
需要修改的内容有五个:
IPADDR=192.168.1.101
GATEWAY=192.168.1.2
ONBOOT=yes
BOOTPROTO=static
DNS1=192.168.1.2
修改前:
修改后:
- 执行 service network restart 如果报错,那就重启虚拟机
- 修改主机名称:vim /etc/sysconfig/network,之后在vim /etc/hosts 进行ip和主机名称映射
- 关闭防火墙:
-
查看防火墙状态:chkconfig iptables --list
-
关闭防火墙:chkconfig iptables off
7、安装hadoop: -
解压hadoop: tar -zxf hadoop-2.7.2.tar.gz -C /opt/module/
-
在/opt/module/hadoop-2.7.2/etc/hadoop 路径下配置 hadoop-env.sh(添加jdk路径)
-
将hadoop添加到环境变量:vim /etc/profile 文件添加如下:
##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH= P A T H : PATH: PATH:HADOOP_HOME/bin
export PATH= P A T H : PATH: PATH:HADOOP_HOME/sbin
8、让修改生效: source /etc/profile,如果不管有就重启
至此hadoop安装完成。
hadoop的运行模式
1、本地模式:不需要启动单独进程,直接运行,测试和开发时候使用
2、伪分布式模式:等同于完全分布式,但是只有一个节点。
3、完全分布式,多个节点
主要回忆一下完全分布式环境的部署:
hadoop完全分布式部署
1、准备 3 台客户机(关闭防火墙、静态 ip、主机名称)
2、用scp命令从第一台虚拟机中拉取hadoop程序包
- scp命令有三种方式举例:
假设我们的数据在hadoop102上面
a、推,假设我们现在在hadoop101上:scp -r /opt/software/ root@hadoop102:/opt ,-r为递归拉取(拉取文件夹),root为用哪么用户权限拉,hadoop102为地址:/后边为从哪个目录拉取
b、拉,假设我们在hadoop102上,要将101上的数据同步到102上,拉的时候即此时我在scp -r root@hadoop101:/etc/profile /etc/profile
c、我们假设现在在hadoop102上,我们要将103的数据拷贝到104中那么如下:
scp -r root@hadoop103:/opt/test root@hadoop104:/opt/
我们可以看出,数据在那第一个地址就填那个,如果数据不再本机上那么就要加上用户和ip如果在直接写带复制文件路径即可。
3、设置ssh无密登录
-
进入home目录:cd ~/.ssh
-
生成公钥和私钥:
ssh -keygen -t rsa -
将公钥拷贝到免密登录的目标机器上
ssh-copy-id hadoop103
ssh-copy-id hadoop104
其大概过程如下图:
-
.ssh 文件夹下的文件功能解释
a、~/.ssh/known_hosts :记录ssh访问过的公钥
b、id_rsa:私钥
c、id_rsa.pub:公钥
d、authorized_keys:存放授权过的无密登录的公钥
4、同步节点一的配置编写了一个xsync其是根据rsync编写的,rsync和scp的不同之处在于其可以避免复制相同的内容。
在构建之前我们大概来设计一下hadoop的节点分配:
因为namenode、resourceManager、和secondarynamenode都是比较耗费资源的所以最好将他们分开在不同的节点放置。
5、配置文件:
- 首先配置hadoop-env.sh配置jdk环境变量上面提到过
- 其次配置hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>