安装hadoop有单节点安装;伪分布式安装和分布式安装
今天就聊聊我在伪分布式安装的过程和遇到的错误,希望能帮到别人
sbin :启动或停止hadoop相关服务的脚本
bin:对hadoop的相关服务进行操作的的脚本
etc:hadoop的配置文件目录
share:hadoop的依赖jar包和文档,文档可以被删除
lib:hadoop的本地库(对数据进行压缩操作)
方法:伪分布式
环境:VNware(物理机同理),Ubuntu16。0。4,hadoop-2。8.1
第一步:下载hadoop到本地并解压
第二步:配置环境变量,配置文件等
第三步:配置ssh免密码登录
这里主要将讲第二步,一,三步出错的几率小
首先将hadoop解压后cd 到/hadoop-2.8.1/etc/hadoop 目录下
vim hadoop-env.sh
export JAVA_HOME = java install 目录(此处是你自己java的安装目录)
vim core-site.xml
<cnfiguration>
<property>
<!--配置hdfs的namenode的地址-->
<name>fs.default.name</name>
<value>hdfs://127.0.0.1:9000</value>
<!--此处的地址本地主机的地址,如果在格式
化namenode或者链接namenode时显示无法无法连接,或者namenode或者其他进程创建后不能
长时间存在,则主要是namenode地址不对,在hostname中更改主机名使其与所配置的namenode的节点地址一致-->
</property>
<property>可以不配置,配置hadoop运行产生数据的存储目录,不是临时数据
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/bigdata/tmp</value>
</property>
</configuration>
vim hdfs-site.xml
<configuration>
<property>
<!--指定hdfs数据的副本数量-->
<name>dfs.replication</name>
<value>1</value>默认存3份,伪分布式存一份
</property>
</configuration>
mv mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<configuration>
<property>
<!--指定mapreduce运行在yarn上-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
vim yarn-site.xml
<property>
<!--指定yarn的管理者resourcemanager运行在那-->
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value> resourcemanager的地址
</property>
<property>
mapreduce执行shuffle时获取数据的方式
<name>yarn.nodemanager.aux-service</name>
<value>mapreduce_shuffle</value>
</property>
cd ~/hadoop-2.8-1
bin/hdfs namenode -format //此处时格式化hdfs
看到successfully 极为成功
vim /etc/profile
将hdfs的path 加到环境变量中,保证在任何目录下都可执行‘
保存退出后,在当前,目录下执行sbin/start-dfs.sh
分别出现 Starting namenode,datanode,seccondary namenode 则表示启动成功
输入jps,显示当前的进程,如果在一段时间内不掉线,即进程稳定存在,则成功
到目前为止,hadoop伪分布式已经配置成功,下面说说可能遇到的问题
1。Namenode 格式化不成功
在执行hdfs namenode -format 时,会显示一大段信息,在信息里找不到successfully,或者其他报错信息
主要的原因可能是 配置sbin下的五个文件时有错误,仔细查看报错信息,检查指定文件(一般报错的位置比较准确)
2。在输入hdfs或者hadoop时显示命令不存在,这个原因主要是hadoop home 路径没有配置,在/etc/profile中加入hadoophome即可,配置方法在上文中有提到。
3。执行sbin/start-dfs.sh后没有启动相关进程(此处执行sbin/start-all.sh,也可以只不过提示信息显示脚本已经过期)
这里的没有启动相关进程是指在输入jps后没有出现namenode,datanode,secondary namenode 等进程信息
或者出现后不稳定,在极短时间内就会消失(如果出现过namenode,datanode,但是不稳定,试试连接namenode,看看可不可以连接上,估计是不行。。。。。)
对于这个问题,我所面对的是进程不稳定,还有在进行链接时无法链接java抛出链接异常如:
SHUTDOWN_MSG: Shutting down NameNode at java.net.UnknownHostException: xxx
这个原因是我所设置的namenode的地址与本地主机名不符合,无法连接上,因为配置伪分布式,所有节点都是在同一台机器上,namenode的地址就是本地的地址,所以必须注意,
因为在好多网上的教程中都有自己的地址,这个需要按照自己的机器配,所以问题较多。
hadoop在格式化HDFS的时候,通过hostname命令获取到的主机名在/etc/hosts文件中进行映射的时候,没有找到,也就是名字不一样,回出错。
这里需要修改一下用户的主机名。
查看自己用户的主机名:hostname
查看/etc/hosts内容:cat /etc/hosts
更改在/etc/hostname中,然后重启即可。
可能还有其他问题,也可以试试此方法。
刚开始学习,如有错误欢迎指正。