Hadoop是什么?
Hadoop是一个分布式系统基础架构,用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算
CentOS7安装hadoop
1单台虚拟机:内存4G,硬盘50G.
2vim /etc/sysconfig/network-scripts/ifcfg-eth0
改成
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
NAME=“eth0”
IPADDR=192.168.1.102
PREFIX=24
GATEWAY=192.168.1.2
DNS1=192.168.1.2
安装jdk
查询是否安装Java软件
$ rpm -qa | grep java
卸载该JDK
sudo rpm -e 软件包
查看JDK安装路径:
$ which java
配置JDK环境变量
sudo vim /etc/profile.d/env.sh
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=
P
A
T
H
:
PATH:
PATH:JAVA_HOME/bin
让修改后的文件生效
source /etc/profile.d/env.sh
测试JDK是否安装成功
java -version
安装hadoop
1)准备3台客户机(关闭防火墙、静态ip、主机名称)
2)安装JDK
3)配置环境变量
4)安装Hadoop
5)配置环境变量
6)配置集群
7)单点启动
8)配置ssh
9)群起并测试集群
分发脚本
!/bin/bash
1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if ((pcount==0)); then
echo no args;
exit;
fi
2 获取文件名称
p1=$1
fname=basename
p
1
e
c
h
o
f
n
a
m
e
=
p1 echo fname=
p1echofname=fname
3 获取上级目录到绝对路径
pdir=cd -P $(dirname
p
1
)
;
p
w
d
e
c
h
o
p
d
i
r
=
p1); pwd echo pdir=
p1);pwdechopdir=pdir
4 获取当前用户名称
user=whoami
5 循环
for host in hadoop2 hadoop3 hadoop4
do
echo ------------------- $host --------------
rsync -av
p
d
i
r
/
pdir/
pdir/fname
u
s
e
r
@
user@
user@host:$pdir
done
修改脚本 xsync 具有执行权限
$ chmod 777 xsync
SSH无密登录配置
ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
ssh-copy-id hadoop2
ssh-copy-id hadoop3
ssh-copy-id hadoop4
hadoop配置
core-site.xml
(1)核心配置文件
$ vi core-site.xml
!-- 指定HDFS中NameNode的地址–>
property>
name>fs.defaultFS
value>hdfs://hadoop2:9000
/property>
!-- 指定Hadoop运行时产生文件的存储目录 -->
property>
name>hadoop.tmp.dir
value>/opt/module/hadoop-2.7.2/data/tmp
/property>
配置hadoop-env.sh
$ vi hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
配置hdfs-site.xml
$ vi hdfs-site.xml
property>
name>dfs.replication/name>
value>1/value>
/property>
!-- 指定Hadoop辅助名称节点主机配置 -->
property>
name>dfs.namenode.secondary.http-address/name>
value>hadoop1:50090/value>
/property>
配置yarn-env.sh
vi yarn-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
配置yarn-site.xml
vi yarn-site.xml
!-- Reducer获取数据的方式 -->
property>
name>yarn.nodemanager.aux-services/name>
value>mapreduce_shuffle/value>
/property>
!-- 指定YARN的ResourceManager的地址 -->
property>
name>yarn.resourcemanager.hostname/name>
value>hadoop3/value>
/property>
!-- 日志聚集功能使能 -->
property>
name>yarn.log-aggregation-enable/name>
value>true/value>
/property>
!-- 日志保留时间设置7天 -->
property>
name>yarn.log-aggregation.retain-seconds/name>
value>604800/value>
/property>
配置mapred-env.sh
vi mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
配置mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
!-- 指定MR运行在Yarn上 -->
property>
name>mapreduce.framework.name/name>
value>yarn/value>
/property>
!-- 历史服务器端地址 -->
property>
name>mapreduce.jobhistory.address/name>
value>hadoop2:10020/value>
/property>
!-- 历史服务器web端地址 -->
property>
name>mapreduce.jobhistory.webapp.address/name>
value>hadoop2:19888/value>
/property>
slaves配置文件/
vi slaves
hadoop2
hadoop3
hadoop4
分发hadoop到集群并配好环境变量
群起集群
(1)如果集群是第一次启动,需要格式化NameNode(注意格式化之前,一定要先停止上次启动的所有namenode和datanode进程,然后再删除data和log数据)
bin/hdfs namenode -format
sbin/start-dfs.sh
启动YARN
sbin/start-yarn.sh
启动历史服务器
sbin/mr-jobhistory-daemon.sh start historyserver