本文共 15363 字,大约阅读时间需要 51 分钟。
文章目录
虚拟机
安装VMwareWorkStation
按照提示安装,输入秘钥即可
新建虚拟机
1、点击文件-新建虚拟机或直接点击创建新的虚拟机,进入新建虚拟机向导
2、选择典型-稍后安装操作系统 3、客户机操作系统:Linux,版本CentOS 7 64位 4、选择安装位置 5、最大磁盘大小,将虚拟磁盘拆分成多个文件选择默认 6、自定义硬件 (1)内存—推荐4GB (2)新CD/DVD(IDE)–使用ISO映像文件 高级—虚拟设备节点:SATA(A) (3)网络适配器设置两个 修改网络适配器–仅主机模式 高级–生成mac地址 添加网络适配器–NAT模式 高级–生成mac地址 7、点击完成,开启此虚拟机,等待运行 8、选择语言,continue 9、设置DATE&TIME:上海 设置NETWORK&HOST NAME:Ethernet33、Ethernet34状态设为on–done 设置INSTALLATION DESTINATION(分区分盘):默认–done 10、设置root初始密码,等待安装完成。登录虚拟机
1、log in:root password为初始密码
2、配置网络 vi /etc/sysconfig/network-scripts/ifcfg-ens33 查看WindowsIp 3、systemctl restart network 重启网络 systemctl stop firewalld 关闭防火墙 systemctl disable firewalld 禁用防火墙安装jdk
1、将安装包上传到/root/software下
2、解压到当前文件夹 tar -zxvf jdk-8u221-linux-x64.tar.gz jdk1.8.0_221是jdk的安装目录 3、配置环境变量 vi /etc/profileexport JAVA_HOME=/root/software/jdk1.8.0_221export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/binexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
source /etc/profile
4、验证安装完成安装mysql
1、上传安装包
MySQL-server-5.6.46-1.el7.x86_64.rpm MySQL-client-5.6.46-1.el7.x86_64.rpm 2、逐次安装 yum -y install perl rpm -ivh MySQL-client-5.6.46-1.el7.x86_64.rpm yum install autoconf -y rpm -e mariadb-libs-1:5.5.60-1.el7_5.x86_64 --nodeps rpm -ivh MySQL-server-5.6.46-1.el7.x86_64.rpm 2、获取mysql初始密码 /root/.mysql_secret 3、启动mysql service mysql start 4、设置mysql密码 mysql -uroot -p(密码) set password=password("**"); 5、配置文件 /usr/my.cnfhadoop伪分布式安装
1、上传包
hadoop-native-64-2.6.0.tar hadoop-2.6.0-cdh5.14.2.tar.gz 2、解压hadoop-2.6.0-cdh5.14.2.tar.gz、修改文件名称为hadoop、删除压缩包 tar -zxvf hadoop-2.6.0-cdh5.14.2.tar.gz mv hadoop-2.6.0-cdh5.14.2 hadoop rm -f hadoop-2.6.0-cdh5.14.2.tar.gz 3、cd hadoop查看一下hadoop的目录结构 bin sbin 执行文件 etc 配置文件 examples 示例 include 拓展 lib 依赖包 share 共享 src 源码 4、cd etc/hadoop里面是各种配置文件 1) vi hadoop-env.sh(hadoop和java相关联) JAVA_HOME的安装目录 如何快速查找JAVA_HOME的安装目录 如果配置了环境变量 echo $JAVA_HOME 如果用rpm安装,没有配置环境变量 which java 2)core-site.xml 1、fs.defaultFS参数配置的是HDFS的地址 可以是主机名、ip地址:9000 2、hadoop.tmp.dir配置的是Hadoop临时目录 3、hosts、groups配置集群时需要配置,表示任意用户、任意组可以使用fs.defaultFS hdfs://hadoop100:9000 hadoop.tmp.dir /root/software/hadoop/tmp hadoop.proxyuser.root.hosts * hadoop.proxyuser.root.groups *
3)hdfs-site.xml
dfs.replication配置的是HDFS存储时的备份数量,因为这里是伪分布式环境只有一个节点,所以这里设置为1。dfs.replication 1
4)检查免密登录
1、修改主机的名称 hostnamectl set-hostname hadoop101(主机名) 2、添加地址和主机名 vi /etc/hosts 3、生成秘钥(私钥和公钥) ssh-keygen -t rsa -P “” ssh-keygen生成,管理和转换认证密钥 -t 创建秘钥的类型 rsa 秘钥类型 -P 提供(旧)密码短语 4、自己保存秘钥 cat .ssh/id_rsa.pub > .ssh/authorized_keys 5)在yarn上执行 mapreduce mapred-site.xml.template改为mapred-site.xmlmapreduce.framework.name yarn
6) 配置yarn
yarn.nodemanager.aux-services mapreduce_shuffle yarn.nodemanager.aux-services.mapreduce.shuffle.class org.apache.hadoop.mapred.ShuffleHandler yarn.resourcemanager.hostname hadoop100
7)配置hadoop环境变量
/etc/profile 第一行 HADOOP_HOME=hadoop的安装目录 最后一行 如果用rpm安装的java 那么直接复制最后一行 如果配置了java环境变量 将$HADOOP_HOME/bin:$HADOOP_HOME/sbin添加到PATH中,位于$PATH前export JAVA_HOME=/root/software/jdk1.8.0_221export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/binexport HADOOP_HOME=/root/software/hadoopexport HADOOP_MAPRED_HOME=$HADOOP_HOMEexport HADOOP_COMMON_HOME=$HADOOP_HOMEexport HADOOP_HDFS_HOME=$HADOOP_HOMEexport YARN_HOME=$HADOOP_HOMEexport HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/nativeexport HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH
用rpm安装的环境变量
前一个path初始化 source /etc/profileexport PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/binexport HADOOP_HOME=/root/software/hadoopexport HADOOP_MAPRED_HOME=$HADOOP_HOMEexport HADOOP_COMMON_HOME=$HADOOP_HOMEexport HADOOP_HDFS_HOME=$HADOOP_HOMEexport YARN_HOME=$HADOOP_HOMEexport HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/nativeexport HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
8)修改slaves文件 因为此时datanode是自己
将localhost 改为 主机名 hadoop20 9)hdfs namenode –format 格式化是对HDFS这个分布式文件系统中的DataNode进行分块,统计所有分块后的初始元数据的存储在NameNode中 10)cd /root/software/hadoop 执行 start-all.sh 11)jps命令查看是否已经启动成功问题:
– process information unavailable 删除 rm -rf hsperfdata_* 重启配置hadoop集群
新建虚拟机设置静态IP关闭防火墙
新建虚拟机,关机,导出为ovf文件
文件-打开-ovf文件-设置虚拟机名称和存储路径-导入 分别修改ip地址 vi /etc/sysconfig/network-scripts/ifcfg-ens33 BOOTPROTO=static ONBOOT=yes 最下面加一条IPADDR=192.168.232.XX(2-255) 重启网络 systemctl restart network 关闭防火墙: systemctl stop firewalld systmectl disable firewalld建立互信
连接mobaxterm
修改主机名 hostnamectl set-hostname hadoop20 hostnamectl set-hostname hadoop21 hostnamectl set-hostname hadoop22 添加各个主机的地址和主机名 vi /etc/hosts 3、生成秘钥(私钥和公钥) ssh-keygen -t rsa -P “” ssh-keygen生成,管理和转换认证密钥 -t 创建秘钥的类型 rsa 秘钥类型 -P 提供(旧)密码短语 4、自己保存秘钥 cat .ssh/id_rsa.pub > .ssh/authorized_keys 5、把秘钥传输给其他机器 ssh-copy-id -i .ssh/id_rsa.pub -p22 root@hadoop101(root用户@其他主机名) ssh-copy-id -i id_rsa.pub -p22 root@hadoop21 将Hadoop21中的authorized_keys文件分发给hadoop20、Hadoop2 scp authorized_keys root@hadoop22:/root/.ssh/authorized_keys scp authorized_keys root@hadoop20:/root/.ssh/authorized_keys 6、测试连接 ssh hadoop22配置集群
准备三台虚拟机
集群部署规划 hadoop20:HDFS NameNode DataNode YARN NodeManager ResourceManager hadoop21:HDFS DataNode SecondaryNameNode YARN NodeManager hadoop22:HDFS DataNode YARN NodeManager1、配置jdk
在hadoop20上先配置jdk,然后分发给其他 解压:tar -zxf jdk-8u221-linux-x64.tar.gz 配置环境变量: vi /etc/profileexport JAVA_HOME=/root/software/jdk1.8.0_221export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/binexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
source /etc/profile
将配置好的文件传给Hadoop21、hadoop22 scp -r jdk1.8.0_221/ root@hadoop21:/root/software/ scp -r jdk1.8.0_221/ root@hadoop22:/root/software/ scp -r /etc/profile root@hadoop21:/etc/profile scp -r /etc/profile root@hadoop22:/etc/profile 别忘记source /etc/profile2、配置hadoop
在hadoop20上先配置jdk,然后分发给其他机器 tar -zxf hadoop-2.6.0-cdh5.14.2.tar.gz mv hadoop-2.6.0-cdh5.14.2 hadoop cd hadoop/etc/hadoop 1)vi hadoop-env.sh hadoop和java相关联 java安装路径 /root/software/jdk1.8.0_221 2)core-site.xml 1、fs.defaultFS参数配置的是HDFS的地址 可以是主机名、ip地址:9000 2、hadoop.tmp.dir配置的是Hadoop临时目录 3、hosts、groups配置集群时需要配置,表示任意用户、任意组可以使用fs.defaultFS hdfs://hadoop20:9000 hadoop.tmp.dir /root/software/hadoop/tmp hadoop.proxyuser.root.hosts * hadoop.proxyuser.root.groups *
3)hdfs-site.xml中dfs.replication的数量为3
指定dfs.namenode.secondary.http-address地址为hadoop21:50090dfs.replication 3 dfs.namenode.secondary.http-address hadoop21:50090
4)在yarn上执行 mapreduce
mapred-site.xml.template改为mapred-site.xmlmapreduce.framework.name yarn
5) 配置yarn
yarn.nodemanager.aux-services mapreduce_shuffle yarn.nodemanager.aux-services.mapreduce.shuffle.class org.apache.hadoop.mapred.ShuffleHandler yarn.resourcemanager.hostname hadoop20
6)slaves中分别加入hadoop20 hadoop21 hadoop22
hadoop20 hadoop21 hadoop22 7)配置环境变量export JAVA_HOME=/root/software/jdk1.8.0_221export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/binexport HADOOP_HOME=/root/software/hadoopexport HADOOP_MAPRED_HOME=$HADOOP_HOMEexport HADOOP_COMMON_HOME=$HADOOP_HOMEexport HADOOP_HDFS_HOME=$HADOOP_HOMEexport YARN_HOME=$HADOOP_HOMEexport HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/nativeexport HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH
将hadoop文件夹和profile文件分发给其他机器
scp -r hadoop root@hadoop21:/root/software scp -r hadoop root@hadoop22:/root/software scp -r /etc/profile root@hadoop21:/etc/profile scp -r /etc/profile root@hadoop22:/etc/profile 8将安装目录hadoop下的logs tmp 文件删除 9namenode格式化(只在hadoop20上格式化) hadoop namenode -format 10namenode上在安装目录下执行start-all.sh(只在hadoop20上启动) 11查看jps同步时间
一:NTP(network time protocol)是网络时间同步协议,就是用来同步网络中各个计算机的时间的协议。
二:NTP服务端配置 1.检查系统是否安装了NTP包(linux系统一般自带NTP4.2),没有安装我们直接使用yum命令在线安装: yum install ntp -y 2.NTP服务端配置文件编辑: vim /etc/ntp.conf 1)修改所有节点 restrict 本机IP mask 255.255.255.0 nomodify notrap 格式:restrict [ 客户端IP ] mask [ IP掩码 ] [参数] 允许client连接到这台服务器同步时间.但是拒绝让他们修改服务器上的时间 nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时 2)选择一个主节点 在server部分添加一下部分,并注释掉server 0 ~ n server 127.127.1.0 以本机时间作为时间服务 Fudge 127.127.1.0 stratum 10 3)主节点以外 在server部分添加如下语句,将server指向主节点。 server 主节点IP 指名上层NTP服务器 Fudge 主节点IP stratum 10如图
主节点配置 restrict 192.168.232.211 mask 255.255.255.0 nomodify notrap server 127.127.1.0 Fudge 127.127.1.0 stratum 10 其他节点 server 192.168.232.20 profer 执行命令 service ntpd start ntpstat #查看是否同步,这个过程可能要等一段时间 date #查看所有机器时间是否相同zookeeper
开源的分布式的协调服务,是Google的Chubby一个开源的实现,它是一个为分布式应用提供一致性服务的软件
ZooKeeper集群搭建 1、解压 zookeeper-3.4.6.tar.gz并重命名为zkpr tar -zxf zookeeper-3.4.6.tar.gz mv zookeeper-3.4.6 zkpr 2、将zoo_sample.cfg改为zoo.cfg,修改配置 mv zoo_sample.cfg zoo.cfg Zookeeper的配置文件存放在主目录下的conf目录中,文件名为zoo.cfg vi zoo.cfg 1)tickTime:默认值为3000,单位是毫秒,不支持以系统属性方式配置。tickTime用于配置Zookeeper中最小时间单元的长度,很多运行时的时间间隔都是使用tickTime的倍数来表示的。 2) initLimit:默认值为10,表示是tickTime的10倍,必须配置,并且是正整数,不支持以系统属性方式配置,用于配置Leader服务器等待Follower启动,并完成数据同步的时间。 3) syncLimit:默认值为5,表示是tickTime的5倍,必须配置,并且是正整数,不支持以系统属性方式配置,用于配置Leader服务器和Follower之间进行心跳检测的最大延时时间,在Zookeeper运行期间,Leader服务器会与所有的Follower进行心跳检测来确定该服务器是否存活。如果在syncLimit时间内无法获取到Follower的心跳检测响应,就认为Follower已经脱离了和自己的同步。在网络环境较差时,可以适当调大这个参数。 4)dataDir:无默认值,不支持以系统属性方式配置,用于配置Zookeeper服务器存储快照文件的目录。默认情况下,如果没有配置dataLogDir,那么事务日志也会存储到该目录中。 dataDir=/root/software/zkpr/zkData 5)clientPort:无默认值,不支持以系统属性方式配置,用于配置服务器对外的服务端口。客户端通过此端口和Zookeeper服务器创建连接,通常设置为2181。每台服务器可以使用不同的端口,并且集群中的所有服务器也不需要保持此端口一致。 6)添加一下内容 server.0=hadoop20:2287:3387 server.1=hadoop21:2287:3387 server.2=hadoop22:2287:3387 3、将zkpr目录分发给其他机器 scp -r zkpr root@hadoop21:/root/software/ scp -r zkpr root@hadoop22:/root/software/ 4、在zookeeper的各个机器中分别创建myid文件(/root/software/zkpr/zkData ),内容分别为0 1 2 5、启动zookeeper服务 zkpr/bin/zkServer.sh start 角色是随机的高可用集群
hdfsHA
配置高可用前,先将配置好的hadoop集群关闭
1、core-site.xmlfs.defaultFS hdfs://hadoopHA hadoop.tmp.dir /root/software/hadoop/tmp hadoop.proxyuser.root.hosts * hadoop.proxyuser.root.groups * ha.zookeeper.quorum hadoop20:2181,hadoop21:2181,hadoop22:2181
2、hdfs-site.xml
dfs.nameservices hadoopHA dfs.ha.namenodes.hadoopHA nn1,nn2 dfs.namenode.rpc-address.hadoopHA.nn1 hadoop20:9000 dfs.namenode.http-address.hadoopHA.nn1 hadoop20:50070 dfs.namenode.rpc-address.hadoopHA.nn2 hadoop22:9000 dfs.namenode.http-address.hadoopHA.nn2 hadoop22:50070 dfs.namenode.shared.edits.dir qjournal://hadoop20:8485;hadoop21:8485;hadoop22:8485/hadoopHA dfs.journalnode.edits.dir /root/software/hadoop/data/jn dfs.ha.automatic-failover.enabled true dfs.client.failover.proxy.provider.hadoopHA org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider dfs.ha.fencing.methods sshfenceshell(/bin/true) dfs.ha.fencing.ssh.private-key-files /root/.ssh/id_rsa dfs.ha.fencing.ssh.connect-timeout 30000
3、分发给其他节点
scp core-site.xml root@hadoop21:/root/software/hadoop/etc/hadoop/core-site.xml scp core-site.xml root@hadoop22:/root/software/hadoop/etc/hadoop/core-site.xml scp hdfs-site.xml root@hadoop22:/root/software/hadoop/etc/hadoop/hdfs-site.xml scp hdfs-site.xml root@hadoop21:/root/software/hadoop/etc/hadoop/hdfs-site.xml 4、启动hdfs-HA集群 1)在各个 JournalNode 节点上,输入以下命令启动 journalnode 服务: hadoop20、hadoop22$HADOOP_HOME/sbin/hadoop-daemon.sh start journalnode2)将各个节点上的logs和tmp删掉
3)在[nn1]上,对其进行格式化
$HADOOP_HOME/bin/hdfs namenode -format 此时hadoop20是nn1
4)将生成的tmp文件发送给nn2,就是hadoop22
scp -r tmp root@hadoop22:/root/software/hadoop/ 5)启动nn1 nn2 namenode$HADOOP_HOME/sbin/hadoop-daemon.sh start namenode
6)查看 web 页面显示
此时都是standby状态 5、hdfs自动故障转移 1)关闭所有 HDFS 服务: $HADOOP_HOME/sbin/stop-dfs.sh 2)启动 Zookeeper 集群: 每台服务器启动 zkpr/bin/zkServer.sh start 3)初始化 HA 在 Zookeeper 中状态:主节点 $HADOOP_HOME/bin/hdfs zkfc -formatZK 4)启动 HDFS 服务:主节点 $HADOOP_HOME/sbin/start-dfs.sh 5)在各个 NameNode 节点上启动 DFSZK Failover Controller,先在哪台机器 启动,哪个机器的 NameNode 就是 Active NameNode $HADOOP_HOME/sbin/hadoop-daemon.sh start zkfc 6)验证 (1)将 Active NameNode 进程 kill kill -9 namenode 的进程 id (2)将 Active NameNode 机器断开网络 service network stop (3)查看standby是否转换成active kill之后yarnHA
yarn.nodemanager.aux-services mapreduce_shuffle yarn.nodemanager.aux-services.mapreduce.shuffle.class org.apache.hadoop.mapred.ShuffleHandler yarn.resourcemanager.ha.enabled true yarn.resourcemanager.cluster-id cluster-yarn1 yarn.resourcemanager.ha.rm-ids rm1,rm2 yarn.resourcemanager.hostname.rm1 hadoop20 yarn.resourcemanager.hostname.rm2 hadoop22 yarn.resourcemanager.zk-address hadoop20:2181,hadoop21:2181,hadoop22:2181 yarn.resourcemanager.recovery.enabled true yarn.resourcemanager.store.class org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
1、分发给其他节点
scp yarn-site.xml root@hadoop21:/root/software/hadoop/etc/hadoop/yarn-site.xml scp yarn-site.xml root@hadoop22:/root/software/hadoop/etc/hadoop/yarn-site.xml 2、启动yarn 主节点执行:$HADOOP_HOME/sbin/start-yarn.sh
此时只有主节点的resourcemanager是启动的
另一个节点
$HADOOP_HOME/sbin/yarn-daemon.sh start resourcemanager
此时另外一个手动启动了
查看服务状态
$HADOOP_HOME/bin/yarn rmadmin -getServiceState rm1
网页无法显示:
C:\Windows\System32\drivers\etc 添加hosts start-all.sh之后启动,需要手动启动第二个resourcemanager转载地址:https://blog.csdn.net/qzc_root/article/details/113866672 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!