Hadoop简介
Hadoop是Apache旗下的一套开源分布式计算平台。
应用范围:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理。
核心组件:
- HDFS(分布式文件系统)高容错性、高伸缩性等允许用户将Hadoop部署在低廉的硬件上
- YARN(运算资源调度系统)
- MAPREDUCE(分布式运算编程框架)允许用户在不了解分布式系统细节情况下开发并行应用程序。
准备Linux环境
虚拟机克隆
- 1、虚拟机克隆
Vmware左侧选中要克隆的机器,这里对原有的BigData01机器进行克隆,虚拟机菜单中,选中管理菜单下的克隆命令。
选择“创建完整克隆”,虚拟机名称为BigData02,选择虚拟机文件保存路径,进行克隆。
再次克隆一个名为BigData03的虚拟机。
修改配
-
2、网络配置
主要固定IP和固定IP与host的关系
界面配置:
1)、进入界面settings
2)、选择network
3)、设置IPV4为手动配置,并配置IP、子网掩码、默认网关
默认网关与你要连接的电脑或者虚拟机的默认网关保持一致
命令配置
配置文件/etc/sysconfig/network-scripts/ifcfg-ens33中的IP和默认网关,设置bootproto为none表示为手动配置。
修改主机名
hostnamectl set-hostname xxxx(你要的主机名字)
修改hosts文件,将名字和IP建立联系 -
3、配置Hostname
BigData01配置hostname为 bigdata01.com
BigData02配置hostname为 bigdata02.com
- 4、配置主机名和IP的映射关系
输入命令“vi /etc/hosts”后,在配置文件中加入
BigData01、BigData02、BigData03三台机器hosts都配置为:
[hadoop@bigdata-senior01 hadoop-2.5.0]$ sudo vim /etc/hosts
192.168.100.10 bigdata01.com
192.168.100.12 bigdata02.com
虚拟机用户切换和文件拷贝
- 创建用户名
a、创建用户useradd hadoop
b、修改密码passwd hadoop
- 用户名切换
格式为:su username。
普通用户的su命令不加username时,就相当于切换到root用户,反之亦然。
PS:当由root切换到普通用户时,不需要输入密码。 - 文件移动
scp +文件+ 对方虚拟机host + 对方虚拟机路径
scp /etc/sudoers aubin.com: /etc/
PS:只有root账号才有移动的权限,可以通过修改etc下sudoers内容增加移动权限
通过:vi /etc/sudoers
进行修改,添加其他账号的权限。通过:wq!
进行强制更新。
防火墙
centos7防火墙
Centos7不在使用iptables 而是使用了firewalld
查看防火墙状态: systemctl status firewalld.service
绿的running表示防火墙开启
执行关闭命令: systemctl stop firewalld.service
再次执行查看防火墙命令:systemctl status firewalld.service
如下图所示表示防火墙已经关闭
执行开机禁用防火墙自启命令 : systemctl disable firewalld.service
关于防火墙的其他命令:
启动:systemctl start firewalld.service
防火墙随系统开启启动 : systemctl enable firewalld.service
PS:如果查看防火墙状态出现Failed to get properties: Access denied报错,运行以下语句即可:
systemctl daemon-reexec
centos7安装iptables
原因:在centos7中执行service iptables start 报如下错误
执行如下命令
systemctl stop firewalld
systemctl mask firewalld
安装iptables-service
yum install iptables-services
设置开机启动
systemctl enable iptables
systemctl stop iptables
systemctl start iptables
systemctl restart iptables
systemctl reload iptables
保存设置
service iptables save
centos6以及之前版本
#查看防火墙状态 : service iptables status
#关闭防火墙: service iptables stop
#查看防火墙开机启动状态: chkconfig iptables --list
#关闭防火墙开机启动: chkconfig iptables off
centos7下安装JDK
- 下载jdk
通过官网下载JDK文件:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
勾选接受,再点击下载JDK,此处版本为JDK1.8
- 安装JDK
将文件放入linux中,使用以下语句解压到当前目录
tar zvxf jdk-8u201-linux-x64.tar
- 配置环境变量
1、打开文件配置文件
vi /etc/profile
2、补充配置信息
export JAVA_HOME=/usr/local/java/jdk1.8.0_201
export PATH=.:$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
3、保存配置
source /etc/profile
- 验证是否成功
java -version进行验证。红色为正确情况,蓝色部分为docker安装java自带jdk(存在一定问题)
Hadoop安装(Hadoop3.2)
自动安装:https://www.cloudera.com/
软件下载路径官网:https://hadoop.apache.org/releases.html
下载安装文件:hadoop-3.2.0.tar
下载源码:hadoop-3.2.0-src.tar。可以通过编译源码和生产安装包。
本文使用安装文件进行安装。
- 1、 新建文件夹apps存放hudoop安装文件
- 2、将hudoop解压到文件夹中
- 3、文件说明,在apps下有一个叫hadopp-3.2.0的文件夹
其中:
bin:自己的操作命令;
sbin:系统命令
etc:备注文件
include:C语言本地库头文件
lib:本地库
share:架包,包括所有文档文件夹(doc)和架包文件夹(hadoop)
share的hadoop下包括很多架包,各个架包中的lib文件夹中包括各个架包的依赖,结果如下图
- 4、配置文件,路径 etc/hadoop
官网配置连接:
http://hadoop.apache.org/common/docs/current/core-default.html
http://hadoop.apache.org/common/docs/current/hdfs-default.html
http://hadoop.apache.org/common/docs/current/mapred-default.htm
配置hadoop-env.sh文件
获取JAVA_HOME注意大小写,将hadoop-env.sh中的JAVA_HOME路径改为此绝对路径。原因:hadoop是通过SSH远程到一台机器上进行启动,而原配置为一个变量,当SSH启动后,在这个子进程中就无此变量,所有就不生效了。
配置core-site.xml文件
公共参数配置:添加如下内容
说明:
fs.defaultFS:指定hadoop的文件系统使用hdfs,并指定nameload和端口。
hadoop.tmp.dir:指定每个集群运行的进程的工作目录。
配置hdfs-site.xml文件
可以不进行配置,一般默认有。也可配置如下信息:
说明:
dfs.replication:配置HDFS副本的数量,即上次一份文件备份几次,默认为3。
dfs.secondary.http.address:指定启动第二服务的地址,配置本地IP
配置mapred-site.xml文件
指定mapreduce运行的平台,此处为yarn。默认为local,local能运行但是在本地运行,无法在集群中运行。
配置yarn-site.xml文件
配置yarn平台信息
说明:
yarn.resourcemanager.hostname:配置yarn平台中的老大,老大进行配置。
yarn.nodemanager.aux-services:平台运行需要一个默认服务
-
5、分发到集群的其他机器上
注意:集群中其他机器的HOST,并且输入密码
如果用户名不同使用以下的当时进行补全
-
6、将hadoop添加到环境变量
运行vim /etc/proflie
命令,根据hadoop安装目录不同进行修改
运行下:source /etc/profile
-
7、格式化
运行hadoop namenode -format
进行格式化,提前如下即表示完成,在此文件夹中记录信息。
-
8、免密登录
需要先设置SSH免密登录才能运行hadoop
cd ~/.shh
到指定目录
运行ssh-keygen -t rsa
(四个回车)
执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
将公钥拷贝到要免密登陆的目标机器上
ssh-copy-id bigdata02.com
通过SSH hadoop01
进行验证;exit
退出;如下登录成功
-
9、启动hadoop
先启动HDFS
sbin/start-dfs.sh
再启动YARN
sbin/start-yarn.sh
-
10、验证hadoop
验证是否启动成功
使用jps
命令验证
http://192.168.0.104:9870(HDFS管理界面)Hadoop3.2中namenode的默认端口配置发生变化:从50070改为9870
http://192.168.0.104:8088 (MR管理界面)
其他集群的机器中显示
其他注意点(坑)
Q:为什么hadoop没有slaves配置文件?
A:hadoop3.0以后slaves更名为workers
Q:新增一台机器
A:因为hadoop其实是通过进程进行启动的,所有新建一台机器,配置core-site.xml 的HDFS的NameNode命令即可,然后在新机器上运行 hadoop-daemon.sh start datanode
即可,会添加到集群中。但是重启不会自动添加,如果要自动添加在etc中的workers中添加新加机器的计算机名即可。
<!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://weekend-1206-01:9000</value>
</property>
Q:datanode的目录不同或者配置多个路径?
A:hdfs-site.xml中配置
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/data,/home/hadoop/data2</value>
</property>
Q:权限问题
A:切记启动hadoop集群的时候,如果使用了root账号。关机后,再使用hadoop账号会出现无法启动的情况,因为写的权限变为了root后,hadoop无法再对文件进行读写导致识别。
Q:域名解析问题
A:虚拟机新建完成,配置完成IP,但是无法上网,ping www.baidu.com无成功,但是对ping百度对应的IP(115.239.211.112)是可以的。确定问题是对域名解析出现了问题,发现DNS对应的文件没有配置 vim /etc/resolv.conf
,修改为下图本地的DNS即可