1.2.1 新增hadoop用户
已有
没有的话使用该命令
groupadd hadoop
useradd -g hadoop -m -d /home/hadoop -s /bin/bash hadoop
在三台机器
1.2.2 防火墙检查
此处我的代表已被关闭
如果没有,执行如下命令
systemctl disable firewalld # 禁用防火墙
systemctl stop firewalld #关闭防火墙
顺便还要检查所有机器是否能相互ping通
All right. 如果不能,要进行处理,需得注意IP配在同一网段。VM虚拟机可能会为你准备两块虚拟网卡。在三个系统里需要激活同一块
1.2.3 设置免秘登录
在任意一台机器上,这里我使用的masternode,收集其他机器的ssh公钥。
ssh-keygen -t rsa
执行完这条命令之后会在~/下产生文件夹.ssh
将三个节点的id_rsa.pub的内容复制到masternode下的authorized_keys文件中去(这个文件是要自己新建的),然后将其分发到slavenode1和slavenode2的相同目录下。
这个操作用于免密通信,方便等下的文件分发
弄完之后测试下能否进行免密登录
如图示中进行ssh来连接并且没有要求输入密码则视为成功,注意一定要进行六组两两测试。
如果发生了ssh,connort connection的错误,那么认为是ssh隧道坍塌。须在待连接端重启ssh服务。这个服务名在centos7下为sshd,在centos6下是ssh,在其他debian系和arch系Linux下一般为sshd
systemctl restart sshd
1.2.4 修改主机名
修改三台机器的/etc/hosts文件
加入如下内容。为了等下能在物理主机上访问HDFS web管理工具。还需要在本地进行该映射。不过在Windows下,要修改的是C:\Windows\System32\drivers\etc\hosts
这个文件一般来讲是不能直接编辑的,需要修改权限。
右键属性->安全->编辑
添加
把登录用户名写进去
添加写入权限
1.2.5 脚本准备
这是一个批处理脚本,转载自网友“子墨良言”
通过它可以方便地在一整个集群当中执行相同的命令并获得回显。
deploy.conf
masternode,all,namenode,zookeeper,resourcemanager,
slavenode1,all,slave,namenode,zookeeper,resourcemanager,
slavenode2,all,slave,datanode,zookeeper,
deploy.sh
#!/bin/bash
#set -x
if [ $# -lt 3 ]
then
echo “Usage: ./deply.sh srcFile(or Dir) descFile(or Dir) MachineTag”
echo “Usage: ./deply.sh srcFile(or Dir) descFile(or Dir) MachineTag confFile”
exit
fi
src=$1
dest=$2
tag=$3
if [ ‘a’$4’a’ == ‘aa’ ]
then
confFile=/home/hadoop/tools/deploy.conf
else
confFile=$4
fi
if [ -f $confFile ]
then
if [ -f $src ]
then
for server in cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'
do
scp $src s e r v e r " : " server":" server":"{dest}
done
elif [ -d $src ]
then
for server in cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'
do
scp -r $src s e r v e r " : " server":" server":"{dest}
done
else
echo “Error: No source file exist”
fi
else
echo “Error: Please assign config file or run deploy.sh command with deploy.conf in same directory”
fi
runRemoteCmd.sh
#set -x
if [ $# -lt 2 ]
then
echo “Usage: ./runRemoteCmd.sh Command MachineTag”
echo “Usage: ./runRemoteCmd.sh Command MachineTag confFile”
exit
fi
cmd=$1
tag=$2
if [ ‘a’$3’a’ == ‘aa’ ]
then
confFile=/home/hadoop/tools/deploy.conf
else
confFile=$3
fi
if [ -f $confFile ]
then
for server in cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'
do
echo “$server********”
ssh $server “source /etc/profile; $cmd”
done
else
echo “Error: Please assign config file or run deploy.sh command with deploy.conf in same directory”
fi
新建文件夹将其存入,等下会用到,作用等下讲解。
这一步在masternode进行即可。后续所有文件从masternode进行分发。
1.2.6 JDK准备
解压JDK并配置环境变量
tar -zxvf jdk<-version> -C [目标路径]
vim /etc/profile
source /etc/profile
这一步要在所有节点进行。
先解压
方式见1.2.6
1.3.1 修改配置文件
进入解压目录下的conf
zoo.cfg本来是没有的,将zoo_sample.cfg拷贝一份并命名为zoo.cfg。编辑
以上是该文件需要的全部内容。记得一定要编辑第一二行是zookeeper的日志和数据目录,可以自定义,但一定要自己建立相应的目录并且将其所有者修改为hadoop用户,命令如下
chown hadoop:hadoop -R [目录]
最后三行是节点的myid及主机名及通信端口。
其他参数关系到Hive的正常启动,如果只装hadoop,可以不用配置。
1.3.2 分发
scp -r [zookerper目录] hadoop@slavenode1:[相同路径]
一定要分发到和master相同的路径,这样便于统一调度。
1.3.3 配置环境变量
加入这些并使环境变量生效,环境变量如何生效
1.3.4 配置ID
三节点同时进行,在数据目录下新建名为myid的文件
在masternode下的该文件中写入"1"
slavenode1为“2”
slavenode2为“3”
如图,只
1.3.4 启动并查看状态
在masternode上启动三节点的zookeeper服务
这时候需要用到runRemoteCmd.sh文件了,记得先给它一个执行权限
chmod 777 runRemoteCmd.sh
执行
runRemoteCmd.sh “/home/hadoop/app/zookeeper/bin/zkServer.sh start” zookeeper
三节点的服务已全部开启,但它不会报错,所以我们要自己验证下服务的状态
runRemoteCmd.sh “/home/hadoop/app/zookeeper/bin/zkServer.sh status” zookeeper
显示masternode、slavenode2为跟随者,slavenode1为领导者。代表成功,领导者只有一个,不一定是slavenode1,它是被选举出来的。所以如果不一样不代表失败。如果失败了,则不会显示mode。
1.3.5 什么是JPS
jps是JDK 1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前java进程的一些简单情况。我们使用一下
我们发现每个节点上都出先了JPS进程和QuorumPeerMain。
JPS是这条命令本身拉起的进程,QuorumPeerMain则是zookeeper拉起的,那么QuorumPeerMain是什么呢?
根据官方文档来看,是个入口类。用来加载myid
============================================================================
还是需要JDK,这个在1.2.6中已经完成。
2.2.1 修改配置文件
首先还是在主机上进行,首先进入到安装目录下的etc/hadoop目录下去。编辑hadoop-env.sh文件
JAVA_HOME参数本来不这样,你改成JDK目录即可。等下分发的时候如果不同的机器JDK目录不一致,则自己还是要做相应
然后要编辑相同目录下的core.site.xml文件
用这一段替换原有的configuration即可。除了hadoop.tmp.dir需要自定义其他可以不用管。这个是hadoop临时目录,上传到hdfs的文件需要在这里暂存,配置完后还得手动建这么个目录然后更改拥有者为hadoop,方式见1.3.1
然后修改hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>dfs.replication
3
dfs.permissions
false
dfs.permissions.enabled
false
dfs.nameservices
cluster1
dfs.ha.namenodes.cluster1
masternode,slavenode1
dfs.namenode.rpc-address.cluster1.masternode
masternode:9000
dfs.namenode.http-address.cluster1.masternode
masternode:50070
dfs.namenode.rpc-address.cluster1.slavenode1
slavenode1:9000
dfs.namenode.http-address.cluster1.slavenode1
slavenode1:50070
dfs.ha.automatic-failover.enabled
true
dfs.namenode.shared.edits.dir
qjournal://masternode:8485;slavenode1:8485;slavenode2:8485/cluster1
dfs.client.failover.proxy.provider.cluster1
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
dfs.journalnode.edits.dir
/home/hadoop/data/journaldata/jn
dfs.ha.fencing.methods
shell(/bin/true)
dfs.ha.fencing.ssh.private-key-files
/home/hadoop/.ssh/id_rsa
dfs.ha.fencing.ssh.connect-timeout
10000
dfs.namenode.handler.count
100
将这段覆盖进去即可
编辑slaves文件
把主机名写入即可。
编辑mapred-site.xml
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>mapreduce.framework.name
yarn
将这段覆盖进去即可,这表示等下要调用yarn框架。这个配置限于hadoop2.x及以上版本,因为1.x是没有yarn框架的。yarn的作用在于进行mapreduce运行时的资源调度。而1.x的资源调度是由mapreduce本身来进行的。
编辑yarn-site.xml文件
<?xml version="1.0"?>yarn.resourcemanager.connect.retry-interval.ms
2000
yarn.resourcemanager.ha.enabled
true
yarn.resourcemanager.ha.automatic-failover.enabled
true
yarn.resourcemanager.ha.automatic-failover.embedded
true
yarn.resourcemanager.cluster-id
yarn-rm-cluster
yarn.resourcemanager.ha.rm-ids
rm1,rm2
yarn.resourcemanager.hostname.rm1
masternode
yarn.resourcemanager.hostname.rm2
slavenode1
yarn.resourcemanager.recovery.enabled
true
yarn.resourcemanager.zk.state-store.address
masternode:2181,slavenode1:2181,slavenode2:2181
yarn.resourcemanager.zk-address
masternode:2181,slavenode1:2181,slavenode2:2181
yarn.resourcemanager.address.rm1
masternode:8032
yarn.resourcemanager.scheduler.address.rm1
masternode:8034
yarn.resourcemanager.webapp.address.rm1
masternode:8088
yarn.resourcemanager.address.rm2
slavenode1:8032
yarn.resourcemanager.scheduler.address.rm2
slavenode1:8034
yarn.resourcemanager.webapp.address.rm2
slavenode1:8088
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce_shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
将这段覆盖进去即可。这是相关资源调度信息。
2.2.2 分发
见1.3.2的方式
2.2.3 启动journalnode
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Java)
最后
作为过来人,小编是整理了很多进阶架构视频资料、面试文档以及PDF的学习资料,针对上面一套系统大纲小编也有对应的相关进阶架构视频资料
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
apreduce_shuffle
yarn.nodemanager.aux-services.mapreduce_shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
将这段覆盖进去即可。这是相关资源调度信息。
2.2.2 分发
见1.3.2的方式
2.2.3 启动journalnode
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。[外链图片转存中…(img-gCXcwyUT-1713852934736)]
[外链图片转存中…(img-PwXs3oDX-1713852934736)]
[外链图片转存中…(img-Uy3qR0wv-1713852934737)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Java)
[外链图片转存中…(img-bJeMGZu7-1713852934737)]
最后
作为过来人,小编是整理了很多进阶架构视频资料、面试文档以及PDF的学习资料,针对上面一套系统大纲小编也有对应的相关进阶架构视频资料
[外链图片转存中…(img-LQCtY4BB-1713852934737)]
[外链图片转存中…(img-kWL3Ryog-1713852934737)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!