hadoop伪分布式安装笔记html
参考 https://www.cnblogs.com/zhangyinhua/p/7647686.htmljava
https://blog.csdn.net/javastart/article/details/47187733node
1、Hadoop的三种运行模式(启动模式)linux
-默认状况下,Hadoop即处于该模式,用于开发和调式。web
-不对配置文件进行修改。
-使用本地文件系统,而不是分布式文件系统。
-Hadoop不会启动NameNode、DataNode、JobTracker、TaskTracker等守护进程,Map()和Reduce()任务做为同一个进程的不一样部分来执行的。
-用于对MapReduce程序的逻辑进行调试,确保程序的正确。ubuntu
-Hadoop的守护进程运行在本机机器,模拟一个小规模的集群 bash
-在一台主机模拟多主机。
-Hadoop启动NameNode、DataNode、JobTracker、TaskTracker这些守护进程都在同一台机器上运行,是相互独立的Java进程。
-在这种模式下,Hadoop使用的是分布式文件系统,各个做业也是由JobTraker服务,来管理的独立进程。在单机模式之上增长了代码调试功能,容许检查内存使用状况,HDFS输入输出,服务器
以及其余的守护进程交互。相似于彻底分布式模式,所以,这种模式经常使用来开发测试Hadoop程序的执行是否正确。
-修改3个配置文件:core-site.xml(Hadoop集群的特性,做用于所有进程及客户端)、hdfs-site.xml(配置HDFS集群的工做属性)、mapred-site.xml(配置MapReduce集群的属性)
-格式化文件系统网络
-Hadoop的守护进程运行在一个集群上 分布式
-Hadoop的守护进程运行在由多台主机搭建的集群上,是真正的生产环境。
-在全部的主机上安装JDK和Hadoop,组成相互连通的网络。
-在主机间设置SSH免密码登陆,把各从节点生成的公钥添加到主节点的信任列表。
-修改3个配置文件:core-site.xml、hdfs-site.xml、mapred-site.xml,指定NameNode和JobTraker的位置和端口,设置文件的副本等参数
-格式化文件系统
环境:在ubuntu17.04
jdk1.8.0_131
hadoop 2.8.1
我实验时候把java和hadoop都安装到/usr/local目录下,要保证当前用户对/usr/local目录有读写权限:
1)sudo chmod 777 /usr/local/ -R
将/usr/local的权限给为777(漏洞文件),不推荐在生产环境中使用。可是能够在学习和调试环境中使用。
2)sudo
在启动Hadoop的各个守护进程的时候,须要使用sudo。
在管理Hadoop的时候,实际上由不一样的用户启动不一样集群的守护进程。
统一使用当前的用户管理全部集群。
3)该目录的全部者设置为当前用户
1)将jdk安装包放在家目录下
2)解压到/usr/local目录下
sudo tar zxvf jdk-8u131-linux-x64.tar.gz -C /usr/local
此时在/opt目录下:会有一个jdk1.8.0_131
3)建立软连接
sudo ln -snf /usr/local/jdk1.8.0_131 /usr/local/jdk
注意:建立软链接的目的是为了,咱们在作项目的时候,可能会用到不一样的jdk版本,这是要换软件的话,只须要修改软连接就能够了。而不用修改配置文件。
4)配置环境变量
局部环境变量:~/.bashrc
全局环境变量:/etc/profile
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
source 相关文件(更新配置文件)
5)查看是否安装成功
java、javac、java -version
1)解压hadoop安装包到opt目录下
sudo tar zxvf hadoop-2.8.1.tar.gz -C /usr/local
2)建立软连接
ln -snf /usr/local/hadoop-2.8.1 /usr/local/hadoop
3)配置环境变量
在/etc/profile文件中加入如下内容:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
4)使用hadoop version命令测试是否配置成功
配置文件存放在/usr/local/hadoop/etc/hadoop中有n多个文件,暂时咱们只须要修改的只有5个
1)hadoop-env.sh
大约在25行左右
export JAVA_HOME=${JAVA_HOME}改为export JAVA_HOME=/usr/local/jdk
注意:在配置文件中有提示咱们怎么设置,咱们通常不删除,二回选择注释它的提示。
2)core-site.xml 设置集群中NameNode结点的URI(包括协议、主机名称、端口号)
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://1.0.0.5:9000</value> </property> </configuration>
分析:1.0.0.5是你主节点所在主机的ip,而9000为端口
3)hdfs-site.xml
<configuration> <property> <name>dfs.nameservices</name> <value>hadoop-cluster</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:///home/server/data/hadoop/hdfs/nn</value> </property> <property> <name>dfs.namenode.ch eckpoint.dir</name> <value>file:///home/server/data/hadoop/hdfs/snn</value> </property> <property> <name>dfs.namenode.checkpoint.edits.dir</name> <value>file:///home/server/data/hadoop/hdfs/snn</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:///home/server/data/hadoop/hdfs/dn</value> </property> </configuration>
4)mapred-site.xml 配置 mapreduce.framework.name,MapReduce的运行方式,取值local、classic或yarn其中之一,设置为yarn,为在yarn集群上运行
在hadoop的相关目录中没有此文件,可是有一个mapred-site.xml.template文件,将该文件复制一份为mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
5)yarn-site.xml
<configuration> <!-- 指定ResourceManager的地址--> <property> <name>yarn.resourcemanager.hostname</name> <value>1.0.0.5</value> </property> <!-- 指定reducer获取数据的方式--> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.local-dirs</name> <value>file:///data/hadoop/yarn/nm</value> </property> </configuration>
7)建立相关目录
sudo mkdir -p /home/server/data/hadoop/hdfs/nn sudo mkdir -p /datahome/server/datahadoop/hdfs/dn sudo mkdir -p /home/server/data/hadoop/hdfs/snn sudo mkdir -p /home/server/data/hadoop/yarn/nm
注意:
若是使用sudo启动hadoop的相关进程,这几目录的权限能够不用管。
若是是使用当前的用户启动相关进程,对于opt目录,当前用户得有读写权限,对于/data目录也须要读写权限。
遇到问题:
笔者就是在这个目录权限的问题吃el很大得亏。首先为了避免使用sudo我将/data目录的权限修改成777,而后进行
HDFS集群格式化的时候,出现:
这时我在想为何呢?原来我只是给data目录设置了读写权限,可是没有给它的子目录设置读写权限。因此:
chmod -R 777 /home/server/data 递归设置权限
8)对HDFS集群进行格式化,HDFS集群是用来存储数据的。
hdfs namenode -format
1)启动HDFS集群
hadoop-daemon.sh start namenode 启动主节点
hadoop-daemon.sh start datanode 启动从节点
2)启动YARN集群
yarn-daemon.sh start resourcemanager
yarn-daemon.sh start nodemanager
3)启动做业历史服务器
mr-jobhistory-daemon.sh start historyserver
4)jps命令查看是否启动成功
5)HDFS和YARN集群都有相对应的WEB监控页面
HDFS:http://ip:50070
YARN:http://ip:8088
6)HDFS集群的简单操做命令
hdfs dfs -ls /
hdfs dfs -mkdir -p /user/zyh
7) YARN集群的操做----提交任务/做业
计算PI值的做业:
yarn jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.1.jar pi 4 100
我以前没有注意发现个人yarn的从节点没有启动起来,在执行计算PI值的时候没有成功才看到:
查看日志发现是配置文件:
在hdfs-site-web.xml中:
查看http://1.0.0.5:50070能够查看从节点是否启动:
在执行上面使用yarn集群来计算pi值得命令:
查看http://1.0.0.5:8088能够看出计算pi值得任务正在执行:
最后成功:
这里就截图了,电脑卡住了,上图中在web页面能够查看到任务执行成功,终端中会显示执行结果!