Hadoop

Hadoop-3.2.1集群搭建笔记

一、准备

版本准备:Centos7,hadoop-3.2.1

1.设置固定IP

v i / e t c / s y s c o n f i g / n e t w o r k − s c r i p t s / i f c f g − e n s 33 : \color{blue}{vi /etc/sysconfig/network-scripts/ifcfg-ens33 :} vi/etc/sysconfig/networkscripts/ifcfgens33:

BOOTPROTO=static

ONBOOT=yes

IPADDR=192.168.5.11

NETMASK=255.255.255.0

GATEWAY=192.168.5.2

DNS1=202.96.128.86

DNS2=223.5.5.5
2.修改主机名称:
vi /etc/sysconfig/network:

NETWORKING=yes

HOSTNAME=master

3.建立主机名和IP的映射:

v i / e t c / h o s t s : \color{blue}{vi /etc/hosts:} vi/etc/hosts

192.168.5.11    master

192.168.5.12    slave1

192.168.5.13    slave2

192.168.5.14    slave3
4.重新安装JDK:

(1)首先卸载不要的Java版本

​ a.用rpm -qa | grep java查看包含java字符串的文件

​ b.用rpm -e --nodeps [filename]删除卸载open Java,包含noarch的文件不必删除

​ c.再次用java -version查看

​ (2)下载安装JDK

​ a.配置环境变量

v i / e t c / p r o f i l e \color{blue}{vi /etc/profile} vi/etc/profile

export JAVA_HOME=/opt/jdk

export PATH=$JAVA_HOME/bin:$PATH

export JRE_HOME=$JAVA_HOME/jre

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

ln -s /opt/jdk/bin/java /usr/bin/java	 (由于一些自己注册的linux服务(如springboot的jar注册的服务),默认情况下从/usr/bin/java路径使用java,yum安装的时候,这个超链接会自动创建,如果你自己下载包安装的话,这个超链接就需要你手动创建了。不过,source之后你就可以将这段删去,否则它会一直跳提示)
5.关闭防火墙

systemctl stop firewalld # 停止防火墙服务

systemctl disable firewalld # 禁止开机启动

systemctl status firewalld #查看防火墙状态

二、Hadoop的安装和配置:

master 节点的配置

镜像网站:http://apache.fayea.com/hadoop/common/ 用wget命令比较好,解压配置:

1.配置环境变量:

export JAVA_HOME=/opt/jdk

export PATH=$JAVA_HOME/bin:$PATH

export JRE_HOME=$JAVA_HOME/jre

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export HADOOP_HOME=/opt/hadoop

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH 
2.配置core-site.xml
<property>

	 <!-- 配置NameNode所在节点 -->
	 
    <name>fs.defaultFS</name>
    
    <value>hdfs://master:8020</value>
    
  </property>


 <property>
 	<!-- 配置数据存放位置 -->

    <property>
    
      <name>hadoop.tmp.dir</name>
      
      <value>/opt/hadoop/tmp</value>
      
      </property>
      
 <property>

    <name>fs.trash.interval</name>    //垃圾箱

    <value>4320</value>

  </property>

#####3.修改hadoop-env.sh

export JAVA_HOME=/opt/jdk

4.修改yarn-env.sh

export JAVA_HOME=/opt/jdk

5.修改mapred-site.xml
<property>
<!-- 指定Hadoop以后MR运行在YARN上,默认值为local -->
    <name>mapreduce.framework.name</name>

    <value>yarn</value>

</property>

<!-- jobhistory properties -->

<property>

    <name>mapreduce.jobhistory.address</name>

    <value>master:10020</value>

</property>

<property>

     <name>mapreduce.jobhistory.webapp.address</name>

     <value>master:19888</value>

</property>
6.修改yarn-site.xml:
<property>
 <!-- 指定YARN的ResourceManager的地址,由于只有一台服务器所以填本机即可 -->
    <name>yarn.resourcemanager.hostname</name>

    <value>master</value>

  </property>    

  <property>

    <name>yarn.resourcemanager.address</name>

    <value>${yarn.resourcemanager.hostname}:8032</value>

  </property>

  <property>

    <name>yarn.resourcemanager.scheduler.address</name>

    <value>${yarn.resourcemanager.hostname}:8030</value>

  </property>

  <property>

    <name>yarn.resourcemanager.webapp.address</name>

    <value>${yarn.resourcemanager.hostname}:8088</value>

  </property>

  <property>

    <name>yarn.resourcemanager.webapp.https.address</name>

    <value>${yarn.resourcemanager.hostname}:8090</value>

  </property>

  <property>

    <name>yarn.resourcemanager.resource-tracker.address</name>

    <value>${yarn.resourcemanager.hostname}:8031</value>

  </property>

  <property>

    <name>yarn.resourcemanager.admin.address</name>

    <value>${yarn.resourcemanager.hostname}:8033</value>

  </property>

  <property>

    <name>yarn.nodemanager.local-dirs</name>

    <value>/data/hadoop/yarn/local</value>

  </property>

  <property>

    <name>yarn.log-aggregation-enable</name>

    <value>true</value>

  </property>

  <property>

    <name>yarn.nodemanager.remote-app-log-dir</name>

    <value>/data/tmp/logs</value>

  </property>

<property> 

	<name>yarn.log.server.url</name> 

	<value>http://master:19888/jobhistory/logs/</value>

	<description>URL for job history server</description>

</property>

<property>

   <name>yarn.nodemanager.vmem-check-enabled</name>

    <value>false</value>

</property>

<property>
 <!-- 指定NodeManager获取数据的方式 -->
    <name>yarn.nodemanager.aux-services</name>

    <value>mapreduce_shuffle</value>

  </property>

  <property>

    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>

      <value>org.apache.hadoop.mapred.ShuffleHandler</value>

      </property>

<property>  

        <name>yarn.nodemanager.resource.memory-mb</name>  

        <value>2048</value>  

 </property>  

 <property>  

        <name>yarn.scheduler.minimum-allocation-mb</name>  

        <value>512</value>  

 </property>   

 <property>  

        <name>yarn.scheduler.maximum-allocation-mb</name>  

        <value>4096</value>  

 </property> 

 <property> 

    <name>mapreduce.map.memory.mb</name> 

    <value>2048</value> 

 </property> 

 <property> 

    <name>mapreduce.reduce.memory.mb</name> 

    <value>2048</value> 

 </property> 

 <property> 

    <name>yarn.nodemanager.resource.cpu-vcores</name> 

    <value>1</value> 

 </property>
7.修改workers文件,删除原有内容,添加
slave1

slave2

slave3

该文件的作用为指定DataNode和NodeManager节点所在位置,这里hadoop3与hadoop2的配置是有区别的,hadoop2中的配置文件为slaves,而3中已被修改为workers

8.修改hdfs-site.xml:
<configuration>

<property>

    <name>dfs.namenode.name.dir</name>
    
	<value>file:///opt/hadoop/dfs/name</value>
	
</property>

<property>

    <name>dfs.datanode.data.dir</name>
    
	<value>file:///opt/hadoop/dfs/data</value>
	
</property>

<property>

	<name>dfs.namenode.secondary.http-address</name>
	
	<value>0.0.0.0:50090</value>
	
</property>
<!-- 配置文件副本数,由于我们是完全分布式只有一台服务器所以配置成3 -->
<property>

     <name>dfs.replication</name>

     <value>3</value>

</property>

dfs.namenode.http-address在hadoop-3.2.0版本上的默认值是 0.0.0.0:9870 ,在hadoop-2.9.2版本上的默认值是0.0.0.0:50070,所以不同版本可以通过不同端口访问NameNode。

9.修改hosts文件
192.168.5.11    master  master 

192.168.5.12    slave1  slave1 

192.168.5.13    slave2  slave2 

192.168.5.14    slave3  slave3 
10.权限赋予
赋予hadoop以root权限运行(若未赋权,启动的时候将报错)

vi /opt/hadoop/sbin/start-dfs.sh

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root 

vi /opt/hadoop/sbin/start-yarn.sh

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
赋予hadoop 关闭权限(若未赋权,将无法关闭)

vi /opt/hadoop/sbin/stop-yarn.sh

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

vi /opt/hadoop/sbin/stop-dfs.sh

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

三、slave1,2,3的配置

1.克隆虚拟机slave1,2,3
2.删除/etc/udev/rules.d/70-persistent-ipoib.rules //注:2和3没删,好像不影响
3.修改/etc/sysconfig/network-scripts/ifcfg-ens33
#UUID=969e9664-e3e7-46fc-8688-f1f47094c86a
IPADDR=192.168.5.12
4.修改机器名vim /etc/sysconfig/network并重启reboot
NETWORKING=yes
HOSTNAME=slave1
5.SSH配置

ssh-keygen -t rsa一路回车

cd ~/.ssh

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys #复制公钥

chmod 644 authorized_keys #赋权

for i in 1 2 3;do scp -r ~/.ssh/id_rsa.pub slave$i:~/.ssh/;done #传输文件

ssh IP/HOSTNAME #查看

6.安装NTP并设置master为NTP服务主节点

yum install ntp ntpdate ntp-doc

systemctl enable ntpd #登录即开启

在master节点

v i m / e t c / n t p . c o n f \color{blue}{vim /etc/ntp.conf} vim/etc/ntp.conf

#注释掉以server开头的行
#添加以下内容,允许内网其他机器同步时间,如果不添加该约束默认允许所有IP访问本机同步服务
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
server  127.127.1.0
fudge   127.127.1.0     stratum 10 

在slave1,2,3节点

先注释掉以server开头的行,添加
server master
# 配置允许上游时间服务器主动修改本机的时间
restrict master nomodify notrap noquery
7.启动NTP服务:

(1)在master

a.在master节点上输入启动命令

systemctl start ntpd

b.查看网络中的NTP服务器,同时显示客户端和每个服务器的关系:

ntpq -p

c.查看时间同步状态

ntpstat

这个一般需要5-10分钟后才能成功连接和同步。所以,服务器启动后需要稍等下。

刚启动的时候,执行ntpstat,会显示unsynchronised:

同步成功以后,会显示:

synchronised to local net (127.127.1.0) at stratum 11
   time correct to within 12 ms
   polling server every 64 s

(2)在slave

a.在slave1,2,3上输入ntpdate -u master 使时间和master同步

b.输入启动命令 systemctl start ntpd

c.设置开机自启动ntp服务:systemctl enable ntpd

2.格式化 hdfs

hdfs namenode -format

出现 I N F O   c o m m o n . S t o r a g e :   S t o r a g e   d i r e c t o r y   / o p t / h a d o o p / c u r r e n t / d f s / n a m e   h a s   b e e n   s u c c e s s f u l l y   f o r m a t t e d . \color{red}{INFO common.Storage: Storage directory /opt/hadoop/current/dfs/name has been successfully formatted.} INFO common.Storage: Storage directory /opt/hadoop/current/dfs/name has been successfully formatted.

则说明格式化成功(这一行代码可以在倒数八九行找找)

注:如果需要重新格式化NameNode,需要先将原来NameNode和DataNode下的文件全部删除

3.启动

sbin/start-dfs.sh

sbin/start-yarn.sh

sbin/mr-jobhistory-daemon.sh start historyserver

4.关闭

sbin/stop-yarn.sh # 关闭hadoop-1上的ResourceManager和

slaves文件中指定节点的NodeManager

sbin/stop-dfs.sh # 关闭hadoop-1上的NameNode、

Secondary NameNode和slaves文件中指定节点的DataNode

sbin/mr-jobhistory-daemon.sh stop historyserver

检查
(1)使用jps

​ 若有相关组件启动,则成功

​ master上应该有以下几个进程:

​ NameNode

​ SecondaryNameNode

​ ResourceManager

​ slave上都应该有以下几个进程:

​ DataNode

​ NodeManager

(2)使用

​ http://master:9870

http://master:8088

防火墙不同版本命令

CentOS-6

service iptables stop #暂时关闭防火墙

service stop iptables # 停止防火墙服务
chkconfig iptables off # 禁止开机启动

chkconfig iptables off #永久关闭防火墙

service iptables status #查看防火状态

service iptables restart #重启防火墙

CentOS-7

systemctl stop firewalld #暂时关闭防火墙

systemctl stop firewalld # 停止防火墙服务
systemctl disable firewalld # 禁止开机启动

systemctl disable firewalld #永久关闭防火墙

systemctl status firewalld #查看防火状态

systemctl enable firewalld #重启防火墙

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值