学了一个学期的Hadoop,终于把这块大骨头啃掉了,泪目!!!
这篇文章更像是一个学习Hadoop的总结
- 一、准备工作
- 1、hadoop压缩包
- 2、jdk压缩包
- 3、Xshell
- 4、Xftp
- 5、VM虚拟机
- 二、Hadoop伪分布式
- 1、安装Java
- 2、配置环境变量
- 3、安装Hadoop
- 4、格式化NameNode
- 5、配置Hadoop、start-dfs.sh和start-yarn.sh环境变量
- 6、启动Hadoop
- 7、通过Web端口访问HDFS
- 三、Hadoop分布式
- 0、安装Java
- 1、修改hostname
- 2、配置环境变量
- 3、设置ssh免密
- 3.1 设置本地免密
- 3.2 设置从机免密登录
- 4、配置Hadoop
- 5、拷贝文件
- 6、格式化NameNode
- 7、验证集群是否启动成功
- 8、通过Web端口访问HDFS
这个官网都会有,下载好压缩包备着,我使用的是2.7.1版本
2、jdk压缩包这是Java的运行环境,因为Hadoop是基于Java的,所以需要配置Java环境
3、Xshell
它可以配合Xftp传输文件到虚拟机上
配合Xshell使用传输文件
5、VM虚拟机这里是教程链接:Xshell和Xftp使用教程
网上有很多安装教程,大家可以参考后安装VM虚拟机,我这里用的是12pro版本。
二、Hadoop伪分布式 1、安装Java
在/usr/local新建一个jvm的文件夹
cd /usr/local mkdir jvm
进入jvm目录,将jdk的压缩包通过xftp导入虚拟机,tar -zxvf解压到当前目录下
2、配置环境变量vi ~/.bashrc编辑环境变量,加入如下目录(我的安装目录:/usr/local/jvm/jdk)
export JAVA_HOME=/usr/local/jvm/jdk export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=$PATH:${JAVA_HOME}/bin
source ~/.bashrc让.bashrc立即生效,通过java -version查看环境变量是否配置成功
3、安装Hadoop将Hadoop安装包通过Xftp导入虚拟机,解压到当前文件夹(/usr/local/hadoop)
修改配置文件core-site.xml和hdfs-site.xml当中的
core-site.xml修改(/usr/local/hadoop/etc/hadoop目录下)
hadoop.tmp.dir file:/usr/local/hadoop/tmp Abase for other temporary directories. fs.defaultFS hdfs://localhost:9000
hdfs-site.xml修改(/usr/local/hadoop/etc/hadoop目录下)
4、格式化NameNodedfs.replication 1 dfs.namenode.name.dir file:/usr/local/hadoop/tmp/dfs/name dfs.datanode.data.dir file:/usr/local/hadoop/tmp/dfs/data
配置完成后格式化NameNode
$ cd /usr/local/hadoop $ ./bin/hdfs namenode -format
5、配置Hadoop、start-dfs.sh和start-yarn.sh环境变量成功的话,会看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若为 “Exitting with status 1” 则是出错。
如果在这一步时提示 Error: JAVA_HOME is not set and could not be found. 的错误,则说明之前设置 JAVA_HOME 环境变量那边就没设置好,请按教程先设置好 JAVA_HOME 变量,否则后面的过程都是进行不下去的。如果已经按照前面教程在.bashrc文件中设置了JAVA_HOME,还是出现 Error: JAVA_HOME is not set and could not be found. 的错误,那么,请到hadoop的安装目录修改配置文件“/usr/local/hadoop/etc/hadoop/hadoop-env.sh”,在里面找到“export JAVA_HOME=${JAVA_HOME}”这行,然后,把它修改成JAVA安装路径的具体地址,比如,“export JAVA_HOME=/usr/lib/jvm/default-java”,然后,再次启动Hadoop。
vi ~/.bashrc打开环境变量配置,添加如下路径(export PATH最好放在最后)
export HADOOP_HOME=/usr/local/hadoop export PATH=${HADOOP_HOME}/sbin:${HADOOP_HOME}/bin:$PATH
source ~/.bashrc使配置立即生效,输入hadoop version确定是否配置成功。
之后可以在任意位置输入start-all.sh启动Hadoop服务。
6、启动Hadoop输入start-all.sh,启动Hadoop(建议回到根目录 *** 作)
7、通过Web端口访问HDFS需要注意的是,无法访问Web端的原因可能是你的NameNode节点挂了(配置文件没配好),还有就是防火墙没有关闭。这里针对防火墙问题无法访问给出解决方案
systemctl stop firewalld systemctl disable firewlld
第一条命令停止防火墙,第二条命令永久关闭防火墙,之后就可以通过localhost:50070端口访问
三、Hadoop分布式
我这里演示的例子为一台主机master和一台从机slave,本质其实是一样的,如果你需要多台从机,相当于加入多个slave,只不过hostname和IP不可以重复,我会在下面的配置中加入注释
0、安装Java参考伪分布式,先在master主机上安装Java环境
1、修改hostname由于Hadoop分布式会有多台机器,每个机子的hostname不能相同
vi /etc/hostname修改hostname,hostname $(cat /etc/hostname)hostname修改后立即生效
将集群中所有机子的IP都加入到/etc/hosts中(这一步所有从机也需要配置)
[root@slave hadoop]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.117.150 master #主机 192.168.117.151 slave #从机 #192.168.117.152 slave02 #192.168.117.153 slave032、配置环境变量
vi ~/.bashrc编辑环境变量,加入如下目录(我的安装目录:/usr/local/jvm/jdk)
export JAVA_HOME=/usr/local/jvm/jdk export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:${PATH}
source ~/.bashrc让.bashrc立即生效,通过java -version查看环境变量是否配置成功
3、设置ssh免密所有从机也需要配置更新环境变量
设置免密之后你每次启动Hadoop就不用再输入密码了,连接从机也不用输入密码,方便主机登入从机
在master上,输入cd ~/.ssh检查你是否有.ssh文件夹。如果没有,输入ssh localhost输密码用ssh连一下本地,就有.ssh文件夹了。在该文件夹下输入ssh-keygen -t rsa进入命令后按流程按回车(有3次回车),然后在该目录下会生成密钥
后在.ssh目录下输入cat id_rsa.pub >> authorized_keys这样你ssh localhost就不用输入密码了。
[root@slave .ssh]# cat id_rsa.pub >> authorized_keys [root@slave .ssh]# ls authorized_keys id_rsa id_rsa.pub known_hosts #可以看到多出了authorized_keys文件 [root@slave .ssh]# ssh localhost Last login: Wed Dec 1 15:33:55 2021 from ::1 #直接连接3.2 设置从机免密登录
将生成好的密钥拷贝到从机上
ssh-copy-id -i root@slave #ssh-copy-id -i root@slave02 #ssh-copy-id -i root@slave03
root@的就是你从机的hostname,拷贝好后输入ssh root@slave验证
[root@master ~]# ssh slave Last login: Wed Dec 1 16:02:37 2021 from 192.168.117.150 [root@slave ~]# exit 登出 Connection to slave closed.
可以看到不需要再进行密码验证了
4、配置Hadoop修改master主机上core-site.xml文件(/usr/local/hadoop/etc/hadoop目录下):
hadoop.tmp.dir file:/usr/local/hadoop/tmp Abase for other temporary directories. fs.defaultFS hdfs://master:9000 # 注意开放的是主机的9000端口,所以localhost要改成主机的hostname
修改hdfs-site.xml文件(/usr/local/hadoop/etc/hadoop目录下):
dfs.replication 2 dfs.namenode.name.dir file:/usr/local/hadoop/tmp/dfs/name #加入如下配置,不加也没啥影响 dfs.datanode.data.dir file:/usr/local/hadoop/tmp/dfs/data dfs.namenode.secorndary.http-address master:50090 #localhost修改成主机的名字
修改主机中的slaves(/usr/local/hadoop/etc/hadoop目录下)配置文件,将从机的hostname加入
[root@master hadoop]# cat slaves slave #我的从机hostname #slave02 #slave035、拷贝文件
将配置好的主机中的hadoop和jdk拷贝到从机
scp -r <需要拷贝的文件目录> <从机hostname>:<拷贝到从机的目录> scp -r /usr/local/hadoop slave:/usr/local #将主机hadoop文件拷贝到从机local目录下 #scp -r /usr/local/hadoop slave02:/usr/local #scp -r /usr/local/hadoop slave03:/usr/local scp -r /usr/local/jvm slave:/usr/local #将主机jvm文件拷贝到从机jvm目录下 #scp -r /usr/local/jvm slave02:/usr/local #scp -r /usr/local/jvm slave03:/usr/local
6、格式化NameNode不要忘记从机的.bashrc环境变量配置,参考主机的环境变量,配置好后source更新!!!
$ cd /usr/local/hadoop $ ./bin/hdfs namenode -format
7、验证集群是否启动成功格式化 *** 作只需要在master主机上运行一次就行
成功的话,会看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若为 “Exitting with status 1” 则是出错。如果在这一步时提示 Error: JAVA_HOME is not set and could not be found. 的错误,则说明之前设置 JAVA_HOME 环境变量那边就没设置好,请按教程先设置好 JAVA_HOME 变量,否则后面的过程都是进行不下去的。如果已经按照前面教程在.bashrc文件中设置了JAVA_HOME,还是出现 Error: JAVA_HOME is not set and could not be found. 的错误,那么,请到hadoop的安装目录修改配置文件“/usr/local/hadoop/etc/hadoop/hadoop-env.sh”,在里面找到“export JAVA_HOME=${JAVA_HOME}”这行,然后,把它修改成JAVA安装路径的具体地址,比如,“export JAVA_HOME=/usr/lib/jvm/default-java”,然后,再次启动Hadoop。
hdfs在hadoop的bin目录下
主机上输入start-all.sh,启动后输入jps
[root@master hadoop]# jps 13845 NameNode 14182 ResourceManager 14875 Jps 14029 SecondaryNameNode
在从机上输入jps
[root@slave ~]# jps 10405 DataNode 11045 Jps 10509 NodeManager
可以看到,主机的NameNode节点已经启动,从机的DataNode节点启动
该集群搭建成功
8、通过Web端口访问HDFSsystemctl stop firewalld systemctl disable firewlld
第一条命令停止防火墙,第二条命令永久关闭防火墙,之后就可以通过localhost:50070端口访问,点击Web界面上方的DataNodes,可以在该界面看到主机的从机信息
如果无法显示datanode,但是jps上都有datanode,检查hosts,每个从机的hosts里都要有整个集群的IP
stop-all.sh然后service network restart每一个机子的网卡,之后再访问web端,或者重新启动一次虚拟机。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)