【大数据环境搭建(三)】在Centos7上搭建Hadoop集群(完全分布式)
集群配置
使用三节点,master、slave1、slave2,
jdk1.8.0_171
zookeeper-3.4.10
hadoop-2.7.3
一、基础配置
首先使用Xshell连接虚拟机,不知道怎么连接的同学可以参考文章底下的系列文章链接。
更改主机名
hostnamectl set-hostname master(在master执行)
hostnamectl set-hostname slave1(在slave1执行)
hostnamectl set-hostname slave2(在slave2执行)
更改完后输入bash
进行生效
下载Vim(三台机器都执行)
yum -y install vim
配置hosts文件(三台机器都执行)
使用ifconfig
或ip addr
查看ip地址,接着将ip及其对应的主机名填入hosts文件中。
vim /etc/hosts
注意:使用tab间隔
无网络,无ip信息?
如果在正常开启网络后输入ip addr
命令看不到本机ip时,
修改网卡的配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33
(网卡名ens33可能会不一样,按上图框框里面的网卡名为准)
将ONBOOT从no改为yes后保存退出,
重启network服务
service network restart
最后再次输入ip addr
即可获取ip信息。
关闭防火墙(三台机器都执行)
关闭防火墙:
systemctl stop firewalld
查看状态:
systemctl status firewalld
永久关闭防火墙:
systemctl disable firewalld
SSH免密(master节点执行)
生成 sshkey
ssh-keygen -t rsa
分发密钥
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
时间同步
下载ntp(三台机器都执行)
yum install -y ntp
修改ntp配置文件(master节点执行)
vim /etc/ntp.conf
在文件末尾添加:
server 127.127.1.0
fudge 127.127.1.0 stratum 10
注意:使用tab间隔
重启ntp服务
systemctl restart ntpd
同步master时间(在slave1,slave2中执行)
ntpdate master
二、JDK安装及配置(在master执行)
创建工作路径
mkdir /usr/java
解压JDK
tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/java/
注意:jdk文件名以自己下载的为准
配置环境变量
vim /etc/profile
在文件末尾添加:
export JAVA_HOME=/usr/java/jdk1.8.0_171
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
保存退出
分发jdk
scp -r /usr/java root@slave1:/usr/
scp -r /usr/java root@slave2:/usr/
分发/etc/profile文件
scp -r /etc/profile root@slave1:/etc/
scp -r /etc/profile root@slave2:/etc/
生效环境变量(三台机器都执行)
source /etc/profile
检验安装是否成功
java -version
能看到版本信息说明安装配置成功
三、zookeeper安装及配置(在master执行)
创建工作路径
mkdir /usr/zookeeper
解压zookeeper
tar -zxvf zookeeper-3.4.10.tar.gz -C /usr/zookeeper
创建zkdata和zkdatalog
在zookeeper的目录中,创建zkdata和zkdatalog两个文件夹
cd /usr/zookeeper/zookeeper-3.4.10
mkdir zkdata zkdatalog
配置zoo.cfg文件
cd /usr/zookeeper/zookeeper-3.4.10/conf/
mv zoo_sample.cfg zoo.cfg
vim zoo.cfg
修改如下:
dataDir=/usr/zookeeper/zookeeper-3.4.10/zkdata
dataLogDir=/usr/zookeeper/zookeeper-3.4.10/zkdatalog
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
配置环境变量
vim /etc/profile
在文件末尾添加:
export ZOOKEEPER_HOME=/usr/zookeeper/zookeeper-3.4.10
export PATH=$PATH:$ZOOKEEPER_HOME/bin
分发zookeeper
scp -r /usr/zookeeper root@slave1:/usr/
scp -r /usr/zookeeper root@slave2:/usr/
创建myid文件
echo '1' > /usr/zookeeper/zookeeper-3.4.10/zkdata/myid(在master执行)
echo '2' > /usr/zookeeper/zookeeper-3.4.10/zkdata/myid(在slave1执行)
echo '3' > /usr/zookeeper/zookeeper-3.4.10/zkdata/myid(在slave2执行)
分发/etc/profile文件
scp -r /etc/profile root@slave1:/etc/
scp -r /etc/profile root@slave2:/etc/
生效环境变量(三台机器都执行)
source /etc/profile
检验安装是否成功
启动zookeeper(三台机器都执行)
zkServer.sh start
查看zookeeper状态(三台机器都执行)
zkServer.sh status
可以看到有follower和leader,说明安装配置成功。
四、hadoop安装及配置(在master执行)
创建工作路径
mkdir /usr/hadoop
解压hadoop
tar -zxvf hadoop-2.7.3.tar.gz -C /usr/hadoop
修改配置文件
文件列表如下:
hadoop-env.sh
core-site.xml
hdfs-site.xml
yarn-site.xml
mapred-site.xml
master
slaves
进入配置文件所在目录:
cd /usr/hadoop/hadoop-2.7.3/etc/hadoop
hadoop-env.sh
vim hadoop-env.sh
修改java环境变量
export JAVA_HOME=/usr/java/jdk1.8.0_171
core-site.xml
vim core-site.xml
在<configuration></configuration>
中加入以下代码:
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/hadoop-2.7.3/hdfs/tmp</value>
</property>
hdfs-site.xml
vim hdfs-site.xml
在<configuration></configuration>
中加入以下代码:
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/hadoop/hadoop-2.7.3/hdfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/hadoop/hadoop-2.7.3/hdfs/data</value>
<final>true</final>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
yarn-site.xml
vim yarn-site.xml
在<configuration></configuration>
中加入以下代码:
<property>
<name>yarn.resourcemanager.address</name>
<value>master:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:18030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:18088</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:18141</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
在<configuration></configuration>
中加入以下代码:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
master
vim master
输入:
master
slaves
vim slaves
清空原来的localhost,重新输入:
slave1
slave2
分发hadoop
scp -r /usr/hadoop root@slave1:/usr/
scp -r /usr/hadoop root@slave2:/usr/
配置环境变量
vim /etc/profile
在文件末尾添加:
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.3
export CLASSPATH=$CLASSPATH:$HADOOP_HOME/lib
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
保存退出
分发/etc/profile文件
scp -r /etc/profile root@slave1:/etc/
scp -r /etc/profile root@slave2:/etc/
生效环境变量(三台机器都执行)
source /etc/profile
检验安装是否成功(在master执行)
格式化hadoop
注意
:首次搭建集群时才需格式化,下次使用时无需再次格式化,切勿多次格式化!
hadoop namenode -format
返回0时,说明格式化成功。
启动hadoop集群
start-all.sh
查看状态(三台机器都执行)
jps
当出现这些节点时,说明hadoop集群已经搭建成功了
五、运行hadoop官方实例–WordCount
本地创建数据文件
vim input.txt
输入一些单词,例如:
Hello World
Hello Hadoop
Hello zookeeper
I Love Hadoop
I Love BigData
保存退出
上传input.txt到hdfs上
hdfs dfs -put input.txt /
运行wordcount
hadoop jar /usr/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /input.txt /output
可以看到已经成功了
打印结果
查看输出文件夹,其中的part-r-00000就是我们要的结果文件
hdfs dfs -ls -R /output
hdfs dfs -cat /out*/part*
可以看到,词频统计运行成功了。
六、关闭集群
关闭hadoop
stop-all.sh(在master执行)
关闭zookeeper
zkServer.sh stop(三台机器都执行)
关闭虚拟机
shutdown -h now(三台机器都执行)
总结
需要注意的是,
1、以上所有路径如果要自定义的话,那么相同路径输入时应该保持一致。
2、xml中,一定要检查<configuration></configuration>
、<property></property>
是否是一一对应的,切勿多敲出一个或少敲一个。
3、切勿多次格式化hadoop。
4、如果格式化之后发现配置文件没配好的话,首先停掉hadoop,然后删除临时文件:
rm -rf /usr/hadoop/hadoop-2.7.3/hdfs
接着修改配置文件,最后重新格式化一遍。