在进行Hadoop的伪分布式安装之前,我们首先对Hadoop的一些基础的要点进行一下说明。关于Hadoop的详细概念,我们可以在搜狗百科上找到很详细的答案。
https://baike.sogou.com/v6822175.htm?fromTitle=hadoop
Hadoop是由Apache基金会开发的一个分布式文件系统,用来存储,访问和计算海量数据的框架。
Hadoop 3大核心组件:
HDFS(Hadoop Distributed File System)
分布式文件系统
MapReduce
分布式运算框架(数据的计算)
YARE(Yet Another Resource Negotiator)
资源管理调度系统(硬件资源管理:cpu 磁盘 内存)
这些都和我们接下来的配置紧密相连。
首先我们需要把hadoop-2.8.4.tar.gz通过SecureCRTPortable工具上传到我们的虚拟机内。我是上传到了我的app文件夹中并进行了解压。
使用tar -zxvf hadoop-2.8.4.tar.gz命令即可。接下来就要进入到hadoop伪分布式安装的主要内容了。
目录
1.环境变量的配置
2.一些基础文件的配置
3.ssh免密登录
4.50070端口监听界面
打开hadoop的各个文件夹我们会发现很多的jar包,这说明hadoop是通过java编写的。想要运行hadoop服务,这就要求我们为我的linux上安装jdk。至于安装jdk的过程我在之前的博客中提到过。
配置完成jdk,我们还需要配置一些关于hadoop的环境变量,告诉我们的linux关于hadoop的一些指令要到哪里进行查找
具体的配置如下
export HADOOP_HOME=/home/hadoop/app/hadoop-2.8.4
export PATH=$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
在进行基础文件的配置之前,我们希望我们的当前用户。我的用户名是hadoop取得对我的hadoop应用的所有权。
那么我们需要进入root权限下给我们的用户赋予这个权力。
chown -R hadoop:hadoop /home/app/hadoop-2.8.4 这个地方是我的hadoop的解压目录
至于这样做的原因之后我会再详细说明。
接下来我们需要对我们的一些配置文件进行添加内容,比如设置数据缓存的仓库。
我们首先进入 hadoop-2.8.4文件夹下的etc/hadoop/内
首先是core-site.xml文件。
在
fs.defaultFS
hdfs://192.168.7.100:9000
hadoop.tmp.dir
/home/hadoop/app/hadoop-2.8.4/tmp
其中的是192.168.7.100是我的虚拟机的ip地址。可以通过ifconfig进行查看。这个地方不要声明为主机名,在我的虚拟机上声明了主机名会导致namenode无法启动。
下方的文件夹设置则是根据我的hadoop安装位置设置的
剩下的路径设置原理与此相同不再重复
在hdfs-site.xml中的
dfs.nameservices
hadoop-cluster
dfs.namenode.name.dir
/home/hadoop/app/hadoop-2.8.4/hdfs/nn
dfs.namenode.checkpoint.dir
/home/hadoop/app/hadoop-2.8.4/hdfs/snn
dfs.namenode.checkpoint.edits.dir
/home/hadoop/app/hadoop-2.8.4/hdfs/snn
dfs.datanode.data.dir
/home/hadoop/app/hadoop-2.8.4/hdfs/dn
在mapred-site.xml中的
mapreduce.framework.name
yarn
在yarn-site.xml中的
yarn.resourcemanager.hostname
192.168.196.129
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.local-dirs
/home/hadoop/app/hadoop-2.8.4/yarn/nm
这个地方的ResourceManager的地址我同样设置成为了我的虚拟机的ip地址
这些配置文件修改完成后。我们需要格式化namenode。但是我的虚拟机在普通用户下没有此权限,所以才有了最开始通过root用户赋予普通用户权限的操作
操作命令 hdfs namenode -format
命令完成后。我们的伪分布式系统就算搭建完成了。这个时候我们可以进入到sbin文件夹下。通过执行
sh start-all.sh命令来启动的hadoop服务。
这个地方有些人会遇到这样的错误
Incorrect configuration: namenode address dfs.namenode.servicerpc-address or dfs.namenode.rpc-address is not configured.
那么这就需要我们到core-site.xml文件中查看我们的ip地址是否配置正确。如果配置正确那么我们使用jps指令可以看到这些
18482 DataNode
18900 Jps
18853 NodeManager
18743 ResourceManager
18360 NameNode
这个地方可能有些人会查看不到DataNode启动,那么可以参考这篇博客
http://blog.sina.com.cn/s/blog_a36d34240102uz17.html
进行一下相关的配置属性修改即可。
在完成了hadoop的配置之后,我们可以使用ssh协议进行登录和操作hadoop平台。
但是每次我们使用 ssh 主机名/IP地址都需要密码
那么如果想要实现免密登录,应该怎么处理。
首先输入一条命令生成密钥
ssh-keygen -t rsa
这条命令在执行完之后,会在我们的当前用户的文件夹下。比如我的就是/home/hadoop文件夹下生成一个.ssh文件夹
进入当前的用户文件夹的方式是使用cd ~指令
进入到这个文件夹中,执行
cat id_rsa.pub >> ~/.ssh/authorized_keys
将公钥文件写入到authorized_keys中。
之后我们需要设置authorized_keys权限
chmod 600 ./authorized_keys
这样ssh免密登录就设置成功了。
当我们使用sh start-all.sh启动hadoop服务之后,我们可以使用ip:50070来访问监听界面。当我们打开hadoop安装包的文件夹我们会发现一些关于服务器的jar包。当我们启动hadoop服务以后,就相当于我们启动我们的web服务器,这些服务器监听了一些端口。我们可以发出一些请求查看一些页面。比如这个监听界面就是这样