一、Hadoop伪分布式安装
关于Hadoop的单机安装,可以参考第一篇文章。本章节演示如何在Linux环境下,进行伪分布式安装,并运行Hadoop自带的WordCount实例检测是否运行正常
Hadoop支持三种模式的安装
其中伪分布式安装时只在一台机器上模拟一个小集群,单集群中只有一个节点。此时每个Hadoop的守护进程是一个独立的Java进程。
二 修改配置文件
Hadoop的配置文件位于 /usr/local/hadoop/hadoop-3.3.6/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml和hdfs-site.xml
cd /usr/local/hadoop/hadoop-3.3.6/etc/hadoop/
- 修改core配置
vim core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/hadoop-3.3.6/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
其中指定HDFS 的地址和端口号,端口号按照官方文档设置为9000即可。
hadoop.tmp.cir是hadoop文件系统依赖的基础配置,很多路径都依赖它。它默认的位置是 在/tmp/($user)下面,但是在/tmp路径下的存储是不安全的,因为Linux一次重启,文件就可能被删除。上面修改了默认配置为:file:/usrllocal/hadoop/hadoop-3.1.2/tmp
- 修改hdfs配置 Hadoop守护进程的配置项目
vim hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/hadoop-3.3.6/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/hadoop-3.3.6/tmp/dfs/data</value>
</property>
</configuration>
因为这里采用伪分布式,集群中只有一个节点,因此副本数量replication的值也只能设置为1
三 配置免密SSH
ssh localhost
如果无法免密登陆请执行
1. ssh-keygen -t rsa -P''-f~/.ssh/id_rsa
2. cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
3. chmod 0600 ~/.ssh/authorized_keys
四 执行Execution
执行后续命令以本地运行一个 MapReduce 作业。
-
格式化文件系统
由于Hadoop的很多工作是在自带的HDFS文件系统上完成的,因此需要将文件系统初始化之后才能进一步执行计算任务。 执行初始化的命令如下:
bin/hdfs namenode -format初始化成功
-
启动 NameNode守护进程和 DataNode 守护进程
通过如下命令启动所有进程:
sbin/start-dfs.shHadoop守护进程的日志输出目录是 $HADOOP_LOG_DIR,其默认值是HADOOP_HOME/logs
如果输出如下错误信息
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.解决办法是在etc/hadoop/hadoop-env.sh 配置文件最后,添加如下信息:
export HDFS_DATANODE_USER=root export HDFS_NAMENODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export YARN_RESOURCEMANAGER_USER=root export YARN_NODEMANAGER_USER=root再次执行启动命令
sbin/start-dfs.sh成功运行之后,输入jps命令可以查看所有的java进程
说明伪分布式Hadoop已经安装启动成功
-
访问web页面
默认地址为自己公网地址后端口:9870
通过该Web 界面,可以查看当前文件系统中各个节点的分布信息,浏览名称节点(namenode)上的存储、登录日志等等。
-
创建运行MapReduce作业必须的HDFS目录
bin/hdfs dfs -mkdir /user bin/hdfs dfs -mkdir /user/<username> -
复制输入文件到分布式系统中
bin/hdfs dfs -mkdir input bin/hdfs dfs -put etc/hadoop/*.xml input如下是创建好的HDFS 目录,可以通过如下命令进行查询。
bin/hdfs dfs -ls bin/hdfs dfs -ls -
运行提供的实例程序
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar grep input output 'dfs[a-z.l+' -
从分布式文件系统中复制文件到本地文件系统,验证输出的结果:
bin/hdfs dfs -get output output cat output/*或者直接查看分布式文件系统的输出文件:
bin/hdfs dfs -cat output/* -
完成以上步骤后,执行一下命令来停止所有的守护进程:
sbin/stop-dfs.sh执行命令之前 java进程如下
执行之后会停止相应的java进程
五 单机运行Yarn
在伪分布式模式中,只需设定很少的参数,你就可以用 Yarn运行一个 MapReduce 作业,并激活 ResourceManager 守护进程和 NodeManager 守护进程。
YARN 主要是为集群提供更好的资源管理与任务调度,然而这在单机上体现不出价值,反而会使程序跑得稍慢些。因此在单机上是否开启 YARN就看实际情况了。
后续指令假定上述指令的第 1~4步已被执行,
-
设置如下配置参数
mapred-site.xml
vim etc/hadoop/mapred-site.xml<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>** yarn-site.xml **
vim etc/hadoop/yarn-site.xml<configuration> <!-- Site specific YARN configuration properties --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration> -
启动ResourceManager守护进程和NodeManager守护进程:
sbin/start-yarn.sh成功运行之后,输入jps命令可以查看所有的Java进程
-
浏览ResourceManager网页 默认地址加端口号8088
-
运行一个MapReduce作业
-
完成以上步骤执行一下停止命令,停止所有守护进程
sbin/stop-yarn.sh备注:
也可以用下面的启动/停止命令,等同于start/stop-dfs.sh+start/stop-yarn.s
sbin/start-all.sh sbin/stop-all.sh