修改主机名和网络
欢迎访问我的个人博客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=
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.xmldfs.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