安装完全分布式Hadoop集群

修改主机名和网络

欢迎访问我的个人博客http://www.liuzhaopo.top

master:

#hostnamectl set-hostname master
#vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=1c0d1057-e3da-4c64-9fa7-78449d3282d2
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.0.100
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
保存退出

slave1:

#hostnamectl set-hostname slave1
#vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=617fd776-a38a-4467-bd53-0bd2bde2391a
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.0.110
NETMASK=255.255.255.0
GATEWAY=192.168.0.1

slave2:

#hostnamectl set-hostname slave2
#vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=04a949c1-73e5-4926-bf65-f32655292eec
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.0.120
NETMASK=255.255.255.0
GATEWAY=192.168.0.1

配置SSH免密登录

*配置映射
在需要免密登录的全部节点上,修改hosts文件,全部都需要添加一样的内容。

#vi /etc/hosts
添加
192.168.0.100	master
192.168.0.110	slave1
192.168.0.120	slave2
保存退出

密钥(最好全部节点都做一遍,全部互相访问不需要密码) 在全部节点中执行:

#ssh-keygen -trsa(在全部节点中执行的原因避免出现scp: /root/.ssh/: Is a directory没有目录的错误)
然后,不断的按回车键。

*在master节点:

#cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
#chmod 600 ~/.ssh/authorized_keys

*将公钥复制到其他机器上

在master免密登录master:#scp ~/.ssh/authorized_keys master:~/.ssh/
在master免密登录slave1:#scp ~/.ssh/authorized_keys slave1:~/.ssh/
在master免密登录slave2:#scp ~/.ssh/authorized_keys slave2:~/.ssh/

配置DNS文件

在master、slave1、slave2都设置:

#vi /etc/resolv.conf
nameserver 8.8.8.8

关闭防火墙并设置开机不自启(centos7+)

查看防火墙当前状态:firewall-cmd –state

关闭防火墙:systemctl stop firewalld.service

设置防火墙开机不自启:systemctl disable firewalld.service

配置java环境

创建文件夹:#mkdir -p /root/hj/java/

解压jdk:

#tar -zxvf jdk-10.0.1_linux-x64_bin.tar.gz -C /root/hj/java/

将jdk添加到环境变量中去:

#vi /etc/profile

最后面添加

#JAVA_HOME
export JAVA_HOME=/root/hj/java/jdk-10.0.1
export PATH= P A T H : PATH: PATH:JAVA_HOME/bin
保存退出

生效环境变量:#source /etc/profile

配置hadoop环境

创建文件夹:#mkdir -p /root/hj/hadoop/

解压hadoop:

#tar -zxvf hadoop-2.9.1.tar.gz -C /root/hj/hadoop/

将hadoop添加到环境变量中去:

#vi /etc/profile

最后面添加

#HADOOP_HOME
export HADOOP_HOME=/root/hj/hadoop/hadoop-2.9.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
保存退出

生效环境变量:#source /etc/profile

配置hadoop参数

【hdfs】
*hadoop-env.sh

#cd /root/hj/hadoop/hadoop-2.9.1/etc/hadoop

#vi hadoop-env.sh

#第27行
export JAVA_HOME=/root/hj/java/jdk-10.0.1

  • core-site.xml
    创建文件夹:
    指定hadoop运行时产生文件的存储目录:#mkdir /root/hj/hadoop/hadoop-2.9.1/data
    #cd /root/hj/hadoop/hadoop-2.9.1/etc/hadoop
    #vi core-site.xml
    fs.defaultFS
    hdfs://master:9000

hadoop.tmp.dir
/root/hj/hadoop/hadoop-2.9.1/data

fs.trash.interval
259200

  • hdfs-site.xml
    #cd /root/hj/hadoop/hadoop-2.9.1/etc/hadoop
    #vi hdfs-site.xml

    dfs.namenode.secondary.http-address
    slave2:50090

  • slaves
    #cd /root/hj/hadoop/hadoop-2.9.1/etc/hadoop
    修改为
    master
    slave1
    slave2
    【yarn】

  • yarn-env.sh
    #cd /root/hj/hadoop/hadoop-2.9.1/etc/hadoop
    在第23行,把注释去掉,修改为
    export JAVA_HOME=/root/hj/java/jdk-10.0.1

  • yarn-site.xml
    #cd /root/hj/hadoop/hadoop-2.9.1/etc/hadoop
    #vi yarn-site.xml

    <!-- 指定YARN的老大(ResourceManager)的地址 -->
    <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>slave1</value>
    </property>
    
    <!-- reducer获取数据的方式 -->
    <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    </property>
    
    <!-- #########nodemanager resouce######### -->
    <property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>4096</value>
    </property>
    
    <property>
    <name>yarn.nodemanager.resource.cpu-vcores</name>
    <value>4</value>
    </property>
    
    <property>
    <name>yarn.log-aggregetion-enable</name>
    <value>true</value>
    </property>
    
    <property>
    <name>yarn.log-aggregetion.retain-seconds</name>
    <value>640800</value>
    </property>
    
  • slaves
    修改为
    master
    slave1
    slave2

【mapredue】

  • mapred-env.sh
    #cd /root/hj/hadoop/hadoop-2.9.1/etc/hadoop
    #vi mapred-env.sh
    在第16行,将注释去掉,修改为
    export JAVA_HOME=/root/hj/java/jdk-10.0.1

  • mapred-site.xml

    #cd /root/hj/hadoop/hadoop-2.9.1/etc/hadoop
    #mv mapred-site.xml.template mapred-site.xml(后缀名为.template的时候hadoop是不识别的)
    #cd /root/hj/hadoop/hadoop-2.9.1/etc/hadoop
    #vi mapred-site.xml
    <!-- 指定mr运行在yarn上 -->
    <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    </property>
    
    <property>
    <name>mapreduce.jobhistory.address</name>
    <value>master:10020</value>
    </property>
    
    <property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>master:19888</value>
    </property>
    

在master节点配置好hadoop各项参数之后,将hadoop文件夹分发到slave1、slave2节点上:

#scp -r /root/hj/hadoop/hadoop-2.9.1 root@slave1:/root/hj/hadoop/

#scp -r /root/hj/hadoop/hadoop-2.9.1 root@slave2:/root/hj/hadoop/

创建文件夹(core-site.xml):

指定hadoop运行时产生文件的存储目录:# mkdir -p /root/hj/hadoop/hadoop-2.9.1/data

格式化namenode

hdfs namenode -format

启动hadoop

启动HDFS:#start-dfs.sh
启动YARN:#start-yarn.sh

查看启动了哪些进程:#jps

http://192.168.0.100:50070 (HDFS管理界面)
http://192.168.0.100:8088 (YARN管理界面)

集群搭建完成以后

  • 基本测试
    服务启动,是否可用,简单的应用

  • hdfs

    读写操作
    bin/hdfs dfs -mkdir -p /user/beifeng/tmp/conf
    bin/hdfs dfs -put etc/hadoop/*-site.xml /user/beifeng/tmp/conf
    bin/hdfs dfs -text /user/beifeng/tmp/conf/core-site.xml
    
  • yarn

    run jar
    
  • mapreduce

    bin/yarn jar share/hadoop/mapreduce/hadoop*example*.jar wordcount /user/beifeng/mapreuce/wordcount/input /user/beieng/mapreduce/wordcount/output
    
  • 基准测试
    测试集群的性能

  • hdfs
    写数据
    读数据

  • 监控集群
    Cloudera
    Cloudera Manager

  • 部署安装集群

  • 监控集群

  • 配置同步集群

  • 预警

集群的时间要同步

  • 找一台机器
    时间服务器
  • 所有的机器与这台机器时间进行定时的同步
    比如,每日十分钟,同步一次时间

集群时间同步:在集群中找一台机器(node1,这里的node1就是任意一台机器,也可以写对应的IP地址),然后集群中的其他机器与node1 每十分钟同步一次。

步骤:

1. rpm -qa | grep ntp  查看ntp 和ntpdate 是否安装
[root@node1 share]# rpm -qa | grep ntp
fontpackages-filesystem-1.41-1.1.el6.noarch
ntpdate-4.2.4p8-3.el6.centos.x86_64
ntp-4.2.4p8-3.el6.centos.x86_64

2. vi /etc/ntp.conf   需要修改三处
a 打开一个注释 ,192.168.1.0 是node1机器上的网关。
	#Hosts on local network are less restricted.
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
   b 将server0 ,server1 ,server2 注释掉
	#Use public servers from the pool.ntp.org project.
	#Please consider joining the pool (http://www.pool.ntp.org/join.html).
	#server 0.centos.pool.ntp.org
	#server 1.centos.pool.ntp.org
	#server 2.centos.pool.ntp.org
    c 打开两个注释,server 和 fudge
	#Undisciplined Local Clock. This is a fake driver intended for backup
	#and when no outside source of synchronized time is available.
	server  127.127.1.0     # local clock
fudge   127.127.1.0 stratum 10

3. vi /etc/sysconfig/ntpd   加上SYNC_HWCLOCK=yes 
	#Drop root to id 'ntp:ntp' by default.
	SYNC_HWCLOCK=yes
	OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid -g"

4. chkconfig ntpd on 将ntp 永久开启

5. service ntpd start    后,可以查看状态  service ntpd status

6. crontab -e  编写定时器同步时间, 意义:每十分钟与node1 同步一次时间。需要在集群中其他的机器中都编写 crontab -e
## sync cluster time
## 分 时 日 月 周 这里是每十分钟同步
0-59/10 * * * * /usr/sbin/ntpdate node1

7. ntpdate node1  然后就可以手动先同步一下时间.

安装maven

*在官网下载maven,然后上传到Linux中。

*解压maven:

#tar -zxvf apache-maven-3.5.4-bin.tar.gz -C /root/hj/maven

*设置maven环境变量:

#vi /etc/profile
最后添加

#MAVEN_HOME
export MAVEN_HOME=/root/hj/maven/apache-maven-3.5.4
export PATH=$PATH:$MAVEN_HOME/bin
保存退出

*生效环境变量:#source /etc/profile

*查看maven是否安装成功:#mvn -version

*更改配置用户范围的本地仓库:

创建用户的本地仓库的文件夹:#mkdir /root/maven/warehouse/

先在/.m2/目录下创建settings.xml文件,然后在~/.m2/settings.xml,设置localRepository元素的值为想要的仓库地址

<settings>
<localRepository>/root/maven/warehouse/</localRepository>
</settings>

安装eclipse

*在官网下载eclipse(JavaEE),然后上传在Linux中。

*解压eclipse在/root/eclipse/中:

tar -zxvf eclipse-jee-photon-R-linux-gtk-x86_64.tar -C /root/eclipse/

安装zookeeper

*在官网下载zookeeper,上传到Linux中。

*创建zookeeper的安装目录:#mkdir /root/zookeeper/

*解压zookeeper:#tar -zxvf zookeeper-3.4.12.tar -C /root/zookeeper/

*创建data目录:#mkdir /root/zookeeper/data/

*创建dataLog目录:#mkdir /root/zookeeper/dataLog/

*创建myid文件:

#cd /root/zookeeper/data/

#vi myid

master节点,输入数字1,然后保存;
slave1节点,输入数字2,然后保存;
slave2节点,输入数字3,然后保存。

*对zookeeper的目录进行授权:#chmod 777 -R /root/hj/zookeeper/

*修改配置文件zoo.cfg:

#/root/hj/zookeeper/zookeeper-3.4.12/conf

#cp zoo_sample.cfg zoo.cfg

#vi zoo.cfg      

在文件末尾添加如下内容
dataDir=/root/zookeeper/data/
dataLogDir=/root/zookeeper/dataLog/
server.1=master:2888:3888  
server.2=slave1:2888:3888  
server.3=slave2:2888:3888

*在master节点将zookeeper分发到slave1、slave2节点中去:

#scp -r /root/hj/zookeeper/ root@slave1:/root/hj/

#scp -r /root/hj/zookeeper/ root@slave2:/root/hj/

*启动zookeeper,分别在三台服务器上运行如下命令:

#sh bin/zkServer.sh start
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值