首先要有三台虚拟机
系统:centos7-1908
hadoop:2.6.5
hive:1.2.0
flink:1.7.2
查看虚拟网络编辑器
查看自己的子网
查看子网的网段
可以将ip设置为192.168.32.128
到192.168.32.254
之间。
我的网关是192.168.32.2
在/etc/sysconfig/network-scripts/ifcfg-ens33
配置好网络,保证节点之间可以互通。
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
## ip为固定
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=9c52ecdf-605b-4728-8e84-10c786436b95
DEVICE=ens33
ONBOOT=yes
##新增的
##ip
IPADDR=192.168.32.200
##子网掩码
NETMASK=255.255.255.0
##网关
GATEWAY=192.168.32.2
此时配置好之后输入
## 使配置生效
source /etc/sysconfig/network-scripts/ifcfg-ens33
## 重启网络
systemctl restart network
## 设置开机启动网络
systemctl enable network
然后ping一下主机ip是否能ping通
将镜像文件中的Packages
包上传到一台虚拟机中(可使用filezilla),我放到了/data下
cd /data
rpm -ivh apr-1.4.8-5.el7.x86_64.rpm
rpm -ivh apr-util-1.5.2-6.el7.x86_64.rpm
rpm -ivh httpd-tools-2.4.6-90.el7.centos.x86_64.rpm
rpm -ivh mailcap-2.1.41-2.el7.noarch.rpm
rpm -ivh httpd-2.4.6-90.el7.centos.x86_64.rpm
启动httpd进程,并设置为开机自启
systemctl start httpd
systemctl enable httpd
rpm -ivh deltarpm-3.6-3.el7.x86_64.rpm
rpm -ivh python-deltarpm-3.6-3.el7.x86_64.rpm
rpm -ivh libxml2-python-2.9.1-6.el7_2.3.x86_64.rpm
rpm -ivh libxml2-2.9.1-6.el7_2.3.x86_64.rpm
rpm -ivh createrepo-0.9.9-28.el7.noarch.rpm
由于http工作目录是/var/www/html/,但是软件包又在硬盘(/data)上,所以需要建一个类似于快捷方式的文件,把软件包“放”到http的工作目录。该工作目录的权限至少需要600,建议为755。
cd /var/www/html/
mkdir /var/www/html/centos7/
ln -s /data/Packages /var/www/html/centos7/packages
chmod 755 -R /var/www/html/centos7/packages
createrepo /var/www/html/centos7/packages
测试是否创建成功
setenforce 0
systemctl stop firewalld ##关闭防火墙
打开浏览器http://你的IP/centos7/packages/
是否能看到包的内容并可以下载,如果可以表示创建成功。
配置repo文件
cd /etc/yum.repos.d/
mkdir bak
mv CentOS-*.repo bak/
vi base.repo
将以下内容放进来
[base]
name=CentOS-Packages
baseurl=http://你的IP/centOS7/packages/
gpgkey=
path=/
enabled=1
gpgcheck=0
## 清理yum缓存
yum clean all
## 重新构建yum缓存
yum makecache
## 在可用的源(base.repo)中查找可用的vim
yum list|grep vim
能显示出可用的vim就算是安装成功了
在第一个节点
将主机名设置为node1
hostnamectl --static set-hostname node1
在第二个节点设置为node2
hostnamectl --static set-hostname node2
在第三个节点设置为node3
hostnamectl --static set-hostname node3
可通过hostname
命令查看是否修改成功。虽然命令行还没有改过来。(重启之后命令行就改过来了)
vi /etc/hosts
127.0.0.1 localhost
192.168.32.200 node1
192.168.32.201 node2
192.168.32.202 node3
## 关闭防火墙
systemctl stop firewalld.service
## 开机就关闭
systemctl disable firewalld.service
## 查看防火墙状态
systemctl status firewalld.service
## 先临时禁用SELinux
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selinux
## 重启
reboot
cat /etc/selinux/config|grep SELINUX=
如果显示disabled
说明操作成功
在所有主机
cd
ssh-keygen -t rsa
## 需要连续按三下enter
在node1主机
scp /root/.ssh/id_rsa.pub root@node1:/root/1.pub
在node2主机
scp /root/.ssh/id_rsa.pub root@node2:/root/2.pub
在node3主机
scp /root/.ssh/id_rsa.pub root@node3:/root/3.pub
在node1主机
cat /root/*.pub >> /root/.ssh/authorized_keys
scp /root/.ssh/authorized_keys root@node2:/root/.ssh/authorized_keys
scp /root/.ssh/authorized_keys root@node3:/root/.ssh/authorized_keys
测试一下ssh 是都配置成功
在node1节点
ssh node2
查看是否成功登陆node2节点
所有主机安装
首先在所有主机安装ntp
## 安装ntp服务
yum -y install ntp
## 备份原有文件
cp /etc/ntp.conf /etc/ntp.conf.bak
在node1节点
修改配置文件
vi /etc/ntp.conf
将一下内容注释掉
# server 0.centos.pool.ntp.org iburst
# server 1.centos.pool.ntp.org iburst
# server 2.centos.pool.ntp.org iburst
# server 3.centos.pool.ntp.org iburst
在后面添加
server 127.127.1.1
重启ntpd进程
systemctl restart ntpd
systemctl enable ntpd
在node2和node3节点
ntpdate hadoop1
vi /etc/ntp.conf
加入以下内容
# server 0.centos.pool.ntp.org iburst
# server 1.centos.pool.ntp.org iburst
# server 2.centos.pool.ntp.org iburst
# server 3.centos.pool.ntp.org iburst
##新加入的
server node1
在node2,node3节点启动ntp
systemctl restart ntpd
systemctl enable ntpd
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo "vm.swappiness=0" >> /etc/sysctl.conf
sysctl -p ##让配置生效
cat /proc/sys/vm/swappiness
下载jdk的rpm安装包
所有节点都要安装jdk
rpm -ivh jdk-8u131-linux-x64.rpm
在/etc/profile
配置一些java_home
vi /etc/profile
加入以下内容
export JAVA_HOME=/usr/java/jdk1.8.0_144
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
source /etc/profile
java -version
如果能查看到jdk的信息就成功了
只需一台节点安装,为了保存hive的元数据信息
yum -y install mariadb-server mariadb
开启服务并设置为开机自启
systemctl start mariadb.service
systemctl enable mariadb.service
第一次登录没有密码,直接按enter继续
设置密码
mysql -u root -p
use mysql;
update user set password=password( '123456' ) where user= 'root' ;
grant all privileges on *.* to root@'%' identified by '123456';
grant all privileges on *.* to root@'node1' identified by '123456';
grant all privileges on *.* to root@'localhost' identified by '123456';
FLUSH PRIVILEGES;
修改编码
cp /etc/my.cnf /etc/my.cnf.bak
vi /etc/my.cnf
在[mysqld]下加入下面内容
character_set_server = utf8
保存
重启数据库
systemctl restart mariadb
所有主机都要安装
yum -y install mysql-connector-java
yum -y install psmisc
yum -y install perl
yum -y install nfs-utils portmap
systemctl start rpcbind
systemctl enable rpcbind
登录mysql
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
CREATE USER 'hive'@'localhost' IDENTIFIED BY 'hive';
GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'localhost';
CREATE USER 'hive'@'%' IDENTIFIED BY 'hive';
GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'%';
CREATE USER 'hive'@'node1'IDENTIFIED BY 'hive';
GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'node1';
alter database hive character set latin1
FLUSH PRIVILEGES;
下载Hadoop的安装包
将其上传到node1并解压到/opt/softwares下
tar -zxvf hadoop-2.6.5.tar.gz -C /opt/softwares
vi etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/java/xxx你的目录
配置etc/hadoop/core-site.xml
在configuration下加入
## 指定了namenode的节点
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/softwares/hadoop-2.6.5/data/tmp</value>
</property>
配置etc/hadoop/hdfs-site.xml
## 副本数
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
# 外部程序操作hdfs时需要获取权限
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
## 指定secondarynamenode节点
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node3:50090</value>
</property>
配置etc/hadoop/mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
## 配置historyserver 可以查看历史记录
<property>
<name>mapreduce.jobhistory.address</name>
<value>node2:10020</value>
</property>
## 查看日志的端口
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node2:19888</value>
</property>
配置etc/hadoop/yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
## 指定resourcemanager节点
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node2</value>
</property>
## 日志聚集功能开启
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
## 日志文件保存的时间,以秒为单位
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>640800</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://node2:19888/jobhistory/logs</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
配置slaves
vi slaves
加入
node1
node2
node3
将配置好的hadoop分发到各个节点
scp -r /opt/softwares/hadoop-2.6.5 root@node2:/opt/softwares
scp -r /opt/softwares/hadoop-2.6.5 root@node3:/opt/softwares
首次启动需要初始化
bin/hdfs namenode -formatcat
这时候会出现shut down namenode xxx
这是正常现象
在NameNode(node1)节点的hadoop目录下启动hdfs
sbin/start-dfs.sh
在resourcemanager(node2)节点启动yarn
sbin/start-yarn.sh
访问node1:50070
node2:8088
如果能看到网页就说明安装成功啦
安装hive,只需要在一个节点安装就可以了(服务端)即可。
1.下载软件包
archive.apache.org/dist/
2.上传到节点并解压
3.配置环境变量,hive加入/etc/profile
4.修改配置文件
1.hive-env.sh中添加信息;
export JAVA_HOME=…
export HADOOP_HOME=…
export HIVE_HOME=…
2.hive-log4j.properties
修改
log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter
3.在conf中新建文件hive-site.xml
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node1:3306/hive?createDatabaseIfNotExist=true</value>
#链接数据库,数据库是hadoop1的hive数据库,如果不存在就创建。
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
#mysql的链接驱动
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
#连接数据库的用户名
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
#链接数据库的密码
</property>
</configuration>
4.把hive/lib下的jline2.12拷贝到hadoop下的share/hadoop/yarn/lib/下,若存在旧版本就 把旧版本删除。
5把刚下载的mysql-connector这个jar包,拷贝到hive下的lib下(/usr/share/java/mysql-connector-java.jar)(因为要连接mysql)
6.启动Hive
hive
在清华源下载,比较快
https://www.apache.org/dyn/closer.lua/flink/flink-1.7.2/flink-1.7.2-bin-hadoop26-scala_2.11.tgz
将压缩包上传到node1节点
修改flink/conf/flink-conf.yaml
,注意:和空格不要丢了
## 设置jobmanager.rpc.address: node1
修改conf/slaves
加入
node2
node3
将flink包分发给其他两台节点
scp -r flink-1.7.2 root@node2:/opt/softwares/
scp -r flink-1.7.2 root@node3:/opt/softwares/
启动flink
bin/start-cluster.sh
访问node1:8081
如果能看到flink说明standalong模式的flink安装成功啦
./yarn-session.sh -n 2 -s 2 -jm 1024 -tm 1024 -nm test -d
-n(--container):TaskManager的数量。
-s(--slots): 每个TaskManager的slot数量,默认一个slot一个core,默认每个taskmanager的slot的个数为1,有时可以多一些taskmanager,做冗余。
-jm:JobManager的内存(单位MB)。
-tm:每个taskmanager的内存(单位MB)。
-nm:yarn 的appName(现在yarn的ui上的名字)。
-d:后台执行。
可能会报错
在yarn.site.xml中加入以下配置
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
重启一下hadoop集群
再执行上述的命令