一、群环境准备
1.1三台虚拟机关闭防火墙
三台机器执行以下命令(root用户来执行)
service iptables stop
chkconfig iptables off
1.2三台虚拟机关闭防火墙
vim /etc/selinux/config
1.3三台机器更改主机名
vim /etc/sysconfig/network
1.4三台机器做主机名与IP地址的映射
vim /etc/hosts
192.168.52.100 node01.hadoop.com node01
192.168.52.110 node02.hadoop.com node02
192.168.52.120 node03.hadoop.com node03
1.5三台机器重启
reboot -h now
1.6三台机器机器免密码登录
1.6.1三台机器生成公钥与私钥
在三台机器执行以下命令,生成公钥与私钥
ssh-keygen -t rsa
执行该命令之后,按下三个回车即可
1.6.2拷贝公钥到同一台机器
三台机器执行命令:
ssh-copy-id node01.hadoop.com
1.6.3复制第一台机器的认证到其他机器
在第一台机器上面指向以下命令
scp /root/.ssh/authorized_keys node02.hadoop.com:/root/.ssh
scp /root/.ssh/authorized_keys node03.hadoop.com:/root/.ssh
1.6.4查看是否成功
cat /root/.ssh/authorized_keys
1.7三台机器时钟同步
第一种同步方式:通过网络进行时钟同步
通过网络连接外网进行时钟同步,必须保证虚拟机连上外网
ntpdate us.pool.ntp.org
阿里云时钟同步服务器
ntpdate ntp4.aliyun.com
三台机器定时任务
crontab -e
*/1 * * * * /usr/sbin/ntpdate us.pool.ntp.org;
或者
*/1 * * * * /usr/sbin/ntpdate ntp4.aliyun.com;
第二种时钟同步方式:通过某一台机器进行同步
以192.168.52.100这台服务器的时间为准进行时钟同步
1.确定是否安装了ntpd的服务
rpm -qa | grep ntpd
如果没有安装,可以进行在线安装
yum -y install ntpd
设置ntpd的服务开机启动
chkconfig ntpd on
2.编辑/etc/ntp.conf
vim /etc/ntp.conf
在文件中添加如下内容
restrict 192.168.52.0 mask 255.255.255.0 nomodify notrap
注释一下四行内容
#server 0.centos.pool.ntp.org
#server 1.centos.pool.ntp.org
#server 2.centos.pool.ntp.org
#server 3.centos.pool.ntp.org
去掉以下内容的注释,如果没有这两行注释,那就自己添加上
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
配置以下内容,保证BIOS与系统时间同步
vim /etc/sysconfig/ntpd
SYNC_HWLOCK=yes
另外两台机器与第一台机器时间同步
另外两台机器与192.168.52.100进行时钟同步
crontab -e
*/1 * * * * /usr/sbin/ntpdate 192.168.52.100
1.8三台机器安装jdk
1.查看自带的openjdk
rpm -qa | grep java
2.卸载系统自带的openjdk
rpm -e java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el6_8.x86_64 tzdata-java-2016j-1.el6.noarch java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el6_8.x86_64 --nodeps
3.上传jdk并解压然后配置环境变量
所有软件的安装路径
mkdir -p /export/servers
所有软件压缩包的存放路径
mkdir -p /export/softwares
4.上传jdk到/export/softwares路径下去,并解压
tar -zxvf jdk-8u141-linux-x64.tar.gz -C ../servers/
配置环境变量
vim /etc/profile
export JAVA_HOME=/export/servers/jdk1.8.0_141
export PATH=:$JAVA_HOME/bin:$PATH
修改完成之后记得 source /etc/profile生效
1.9zookeeper的介绍以及集群环境搭建
1.下载zookeeeper的压缩包,下载网址如下
http://archive.apache.org/dist/zookeeper/
我们在这个网址下载我们使用的zk版本为3.4.9
下载完成之后,上传到我们的linux的/export/softwares路径下准备进行安装
解压zookeeper的压缩包到/export/servers路径下去,然后准备进行安装
cd /export/softwares
tar -zxvf zookeeper-3.4.9.tar.gz -C ../servers/
2.修改配置文件
第一台机器修改配置文件
cd /export/servers/zookeeper-3.4.9/conf/
cp zoo_sample.cfg zoo.cfg
mkdir -p /export/servers/zookeeper-3.4.9/zkdatas/
vim zoo.cfg
dataDir=/export/servers/zookeeper-3.4.9/zkdatas
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888
3.添加myid配置
在第一台机器的
/export/servers/zookeeper-3.4.9/zkdatas/这个路径下创建一个文件,文件名为myid ,文件内容为1
echo 1 > /export/servers/zookeeper-3.4.9/zkdatas/myid
4.安装包分发并修改myid的值
安装包分发到其他机器
第一台机器上面执行以下两个命令
scp -r /export/servers/zookeeper-3.4.9/ node02:/export/servers/
scp -r /export/servers/zookeeper-3.4.9/ node03:/export/servers/
第二台机器上修改myid的值为2
第三台机器上修改myid的值为3
echo 2 > /export/servers/zookeeper-3.4.9/zkdatas/myid
echo 3 > /export/servers/zookeeper-3.4.9/zkdatas/myid
5.三台机器启动zookeeper服务
这个命令三台机器都要执行
/export/servers/zookeeper-3.4.9/bin/zkServer.sh start
查看启动状态
/export/servers/zookeeper-3.4.9/bin/zkServer.sh status
1.10、 CDH 伪分布式环境搭建
1.将我们重新编译之后支持snappy压缩的hadoop包上传到第一台服务器并解压
第一台机器执行以下命令
cd /export/softwares/
mv hadoop-2.6.0-cdh5.14.0-自己编译后的版本.tar.gz hadoop-2.6.0-cdh5.14.0.tar.gz
tar -zxvf hadoop-2.6.0-cdh5.14.0.tar.gz -C ../servers/
2.查看hadoop支持的压缩方式以及本地库
第一台机器执行以下命令
cd /export/servers/hadoop-2.6.0-cdh5.14.0
bin/hadoop checknative
如果出现openssl为false,那么所有机器在线安装openssl即可,执行以下命令,虚拟机联网之后就可以在线进行安装了
yum -y install openssl-devel
3.修改配置文件
修改core-site.xml
第一台机器执行以下命令
cd /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop
vim core-site.xml
fs.default.name
hdfs://192.168.52.100:8020
hadoop.tmp.dir
/export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/tempDatas
io.file.buffer.size
4096
fs.trash.interval
10080
修改hdfs-site.xml
第一台机器执行以下命令
cd /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop
vim hdfs-site.xml
dfs.namenode.secondary.http-address
node01:50090
dfs.namenode.http-address
node01:50070
dfs.namenode.name.dir
file:///export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/namenodeDatas
dfs.datanode.data.dir
file:///export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/datanodeDatas
dfs.namenode.edits.dir
file:///export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/nn/edits
dfs.namenode.checkpoint.dir
file:///export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/snn/name
dfs.namenode.checkpoint.edits.dir
file:///export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/nn/snn/edits
dfs.replication
1
dfs.permissions
false
dfs.blocksize
134217728
修改hadoop-env.sh
vim hadoop-env.sh
export JAVA_HOME=/export/servers/jdk1.8.0_141
修改mapred-site.xml
vim mapred-site.xml
mapreduce.framework.name
yarn
mapreduce.job.ubertask.enable
true
mapreduce.jobhistory.address
node01:10020
mapreduce.jobhistory.webapp.address
node01:19888
修改yarn-site.xml
vim yarn-site.xml
yarn.resourcemanager.hostname
node01
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.log-aggregation-enable
true
yarn.log-aggregation.retain-seconds
604800
修改slaves文件
vim slaves
node01
node02
node03
创建文件存放目录
mkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/tempDatas
mkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/namenodeDatas
mkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/datanodeDatas
mkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/nn/edits
mkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/snn/name
mkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/nn/snn/edits
安装包的分发
第一台机器执行以下命令
cd /export/servers/
scp -r hadoop-2.6.0-cdh5.14.0/ node02:$PWD
scp -r hadoop-2.6.0-cdh5.14.0/ node03:$PWD
配置hadoop的环境变量
三台机器都要进行配置hadoop的环境变量
三台机器执行以下命令
vim /etc/profile
export HADOOP_HOME=/export/servers/hadoop-2.6.0-cdh5.14.0
export PATH=:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
配置完成之后生效
source /etc/profile
集群启动
要启动 Hadoop 集群,需要启动 HDFS 和 YARN 两个集群。
注意:首次启动HDFS时,必须对其进行格式化操作。本质上是一些清理和准备工作,因为此时的 HDFS 在物理上还是不存在的。
bin/hdfs namenode -format或者bin/hadoop namenode –format
单个节点逐一启动
在主节点上使用以下命令启动 HDFS NameNode:
hadoop-daemon.sh start namenode
在每个从节点上使用以下命令启动 HDFS DataNode:
hadoop-daemon.sh start datanode
在主节点上使用以下命令启动 YARN ResourceManager:
yarn-daemon.sh start resourcemanager
在每个从节点上使用以下命令启动 YARN nodemanager:
yarn-daemon.sh start nodemanager
以上脚本位于$HADOOP_PREFIX/sbin/目录下。如果想要停止某个节点上某个角色,只需要把命令中的start 改为stop 即可。
脚本一键启动
node01节点上执行以下命令
第一台机器执行以下命令
cd /export/servers/hadoop-2.6.0-cdh5.14.0/
sbin/start-dfs.sh
sbin/start-yarn.sh
sbin/mr-jobhistory-daemon.sh start historyserver
停止集群
sbin/stop-dfs.sh
sbin/stop-yarn.sh
sbin/mr-jobhistory-daemon.sh start historyserver
浏览器查看启动页面
hdfs集群访问地址:
http://192.168.52.100:50070/dfshealth.html#tab-overview
yarn集群访问地址:
http://192.168.52.100:8088/cluster
jobhistory访问地址:
http://192.168.52.100:19888/jobhistory
1.11测试-HDFS 使用初体验
从Linux 本地上传一个文本文件到 hdfs 的/test/input 目录下
hdfs -dfs -mkdir -p /test/input
hdfs -dfs -put /root/install.log /test/input
在 Hadoop 安装包的
hadoop-2.6.0-cdh5.14.0/share/hadoop/mapreduce 下有官方自带的mapreduce 程序。我们可以使用如下的命令进行运行测试。
示例程序jar:
hadoop-mapreduce-examples-2.6.0-cdh5.14.0.jar
计算圆周率:
hadoop jar /export/servers/hadoop-2.6.0-cdh5.14.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.14.0.jar pi 2 5