需要的安装包:
1.jdk压缩包
2.hadoop压缩包
请前往百度云上上下载相关安装包(密码:8op1)
开始搭建hadoop集群
1.因为默认的虚拟机主机名都是ubuntu,所以为了便于虚拟机的识别,创建完成虚拟机后我们对虚拟机名进行修改,我们把用于主节点的虚拟机名称设为master(按自己的喜好创建),把用于从节点的虚拟机名称设为slave1
2.为了虚拟机之间能ping通,需要修改虚拟机的ip地址(这里以在master机器操作为例子,从节点的虚拟机也要进行一致的操作)
命令:sudo gedit /etc/hosts
把/etc/hosts中yangcx-virtual-machine修改为刚刚改过的主机名master,同时将前面的ip地址改为实际的ip地址
怎么知道自己虚拟机的ip地址
命令:ifconfig -a
上图红框标记的就是虚拟机的真实ip地址,因此我们把/etc/hosts中的内容修改为:
slave1的ip地址就是从虚拟机slave1的真实ip地址。同样,我们在slave1虚拟机上也要进行这一步操作。
3.关闭虚拟机的防火墙
一般来说,ubuntu默认都是安装防火墙软件ufw的,使用命令 sudo ufw version,如果出现ufw的版本信息,则说明已有ufw
使用命令 sudo ufw status查看防火墙开启状态:如果是active则说明开启,如果是inactive则说明关闭
开启/关闭防火墙 (默认设置是’disable’)
sudo ufw enable|disable
我们使用sudo ufw disble来关闭防火墙,并再次用sudo ufw status 查看防火墙是否关闭
将jdk的压缩文件拖进master和slave1虚拟机中,压缩(右键文件,extract here),或者用命令行
tar -zxvf jdk1.8.0_161.tar.gz(使用自己的压缩文件名)
配置环境jdk环境:
命令:sudo gedit /etc/profile
将jdk的路径添加到文件后面(根据自己的文件路径来,我这里jdk1.8.0_161文件夹的路径是/home/hadoop/java)
export JAVA_HOME=/home/hadoop/java/jdk1.8.0_161
export JRE_HOME=/home/hadoop/java/jdk1.8.0_161/jre
export CLASSPATH=.: J A V A _ H O M E / l i b : JAVA\_HOME/lib: JAVA_HOME/lib:JRE_HOME/lib:$CLASSPATH
export PATH= J A V A _ H O M E / b i n : JAVA\_HOME/bin: JAVA_HOME/bin:JRE_HOME/bin: J A V A _ H O M E : JAVA\_HOME: JAVA_HOME:PATH
保存退出,为了使配置立即生效,键入命令:source /etc/profile,或者重启虚拟机,命令:shutdown -r now
检查路径jdk是否安装成功,键入命令:java -version
如果出现了版本信息,则恭喜配置成功;
三.安装SSH服务
1.首先确保虚拟机能连上网
2.更新源列表:sudo apt-get update
3.安装ssh:输入"sudo apt-get install openssh-server"–>回车–>输入"y"–>回车–>安装完成。
打开"终端窗口",输入"sudo ps -e |grep ssh"–>回车–>有sshd,说明ssh服务已经启动,如果没有启动,输入"sudo service ssh start"–>回车–>ssh服务就会启动。
ssh生成密钥有rsa和dsa两种生成方式,默认情况下采用rsa方式。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MHoDj79a-1648961909132)(https://leanote.com/api/file/getImage?fileId=59083b63ab64414416004549)]
(注:回车后会在~/.ssh/下生成两个文件:id_rsa和id_rsa.pub这两个文件是成对出现的)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QDUFJU33-1648961909133)(https://leanote.com/api/file/getImage?fileId=59083bb7ab644140e40044bd)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vtscfMpf-1648961909134)(https://leanote.com/api/file/getImage?fileId=59083bd8ab644140e40044c2)]
完成后就可以无密码登录本机了。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-deRFeIRB-1648961909134)(https://leanote.com/api/file/getImage?fileId=59083c3eab64414416004559)]
( 注:当ssh远程登录到其它机器后,现在你控制的是远程的机器,需要执行退出命令才能重新控制本地主机。)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EyUdSEbM-1648961909135)(https://leanote.com/api/file/getImage?fileId=59083c83ab644140e40044df)]
1~4步在master和slave1两台虚拟机上都是配置
5.配置master无密码登陆slave1
mater主机中输入命令复制一份公钥到home中
cp .ssh/id_rsa.pub ~/id_rsa_master.pub
把master的home目录下的id_rsa_master.pub拷到slave1的home下(我的做法是先拖到windows桌面上,在拖进slave1虚拟机中)
slave1的home目录下分别输入命令
cat id_rsa_master.pub >> .ssh/authorized_keys
至此实现了mater对slave1的无密码登陆
以下的步骤只在master上进行(除了hadoop的环境变量
配置在slave1上也要进行)
五.安装hadoop
1.将hadoop压缩包拖进master虚拟机中,解压(我这里解压的路径是/home/hadoop/hadoop-2.7.3)
2.在hadoop-2.7.3文件夹里面先创建4个文件夹:
3.配置 hadoop的配置文件
先进入配置文件的路径:cd /home/hadoop/hadoop-2.7.3/etc/hadoop(再次强调,使用自己的路径)
输入:ls
查看该路径下的文件列表
被红框框住的文件是我们要进程配置的文件
1.首先配置core-site.xml文件
sudo gedit core-site.xml
在中加入以下代码:
hadoop.tmp.dir
file:/home/hadoop/hadoop-2.7.3/hdfs/tmp
A base for other temporary directories.
io.file.buffer.size
131072
fs.defaultFS
hdfs://master:9000
注意:第一个属性中的value和我们之前创建的/hadoop-2.7.3/hdfs/tmp路径要一致。
2.配置hadoop-env.sh文件
sudo gedit hadoop-env.sh
将JAVA_HOME文件配置为本机JAVA_HOME路径
3.配置 yarn-env.sh
sudo gedit yarn-env.sh
将其中的JAVA_HOME修改为本机JAVA_HOME路径(先把这一行的#去掉)
4.配置hdfs-site.xml
sudo gedit hdfs-site.xml
在中加入以下代码
dfs.replication
1
dfs.namenode.name.dir
file:/home/hadoop/hadoop-2.7.3/hdfs/name
true
dfs.datanode.data.dir
file:/home/hadoop/hadoop-2.7.3/hdfs/data
true
dfs.namenode.secondary.http-address
master:9001
dfs.webhdfs.enabled
true
dfs.permissions
false
注意(其中第二个dfs.namenode.name.dir和dfs.datanode.data.dir的value和之前创建的/hdfs/name和/hdfs/data路径一致;因为这里只有一个从主机slave1,所以dfs.replication设置为1)
5 .复制mapred-site.xml.template文件,并命名为mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
配置 mapred-site.xml,在标签中添加以下代码
mapreduce.framework.name
yarn
6.配置yarn-site.xml
sudo gedit yarn-site.xml
在标签中添加以下代码
?yarn.resourcemanager.address
? ?master:18040
?
?
? ?yarn.resourcemanager.scheduler.address
? ?master:18030
?
?
? ?yarn.resourcemanager.webapp.address
? ?master:18088
?
?
? ?yarn.resourcemanager.resource-tracker.address
? ?master:18025
?
?
? ?yarn.resourcemanager.admin.address
? ?master:18141
?
?
? ? yarn.nodemanager.aux-services
? ? mapreduce_shuffle
?
?
?????yarn.nodemanager.auxservices.mapreduce.shuffle.class
?????org.apache.hadoop.mapred.ShuffleHandler
?
7.配置slaves 文件
sudo gedit slaves
把原本的localhost删掉,改为slave1
8.配置hadoop的环境,就像配置jdk一样
sudo gedit /etc/profile
根据hadoop文件夹的路径配置,以我的路径/home/hadoop/hadoop-2.7.3 为例
export HADOOP_HOME=/home/hadoop/hadoop-2.7.3
export PATH="$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH"
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
键入命令 source /etc/profile 使配置立即生效
9.接下来,将hadoop传到slave1虚拟机上面去
scp -r hadoop-2.7.1 hadoop@slave1:~/
注意:hadoop是虚拟机的用户名,创建slave1时设定的
传过去后,在slave1上面同样对hadoop进行路径配置,和第8步一样
9.初始化hadoop
hdfs name -format
10.开启hadoop
两种方法:
如果在mater上面键入jps后看到
在slave1上键入jps后看到
则说明集群搭建成功
六:最后用自带的样例测试hadoop集群能不能正常跑任务
使用命令
hadoop jar /home/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar pi 10 10
用来求圆周率,pi是类名,第一个10表示Map次数,第二个10表示随机生成点的次数(与计算原理有关)
最后出现结果
则,恭喜你,hadoop集群搭建完成
成