赞
踩
1、环境准备
jdk1.8 下载地址:https://www.oracle.com/java/technologies/downloads/#java8
进入官网如下图所示,选择自己合适的安装包下载即可
hadoop安装包 下载地址:https://hadoop.apache.org/releases.html
进入官网如下图所示,选择自己合适的版本下载即可
安装ssh服务
进入服务器中,输入如下命令,查看是否已经安装好ssh服务,若没有,则使用如下命令进行安装:
sudo apt-get install ssh openssh-server
创建ssh-key,这里采用rsa方式,使用如下命令:
ssh-keygen -t rsa -P ""
出现的图形就是密码,接着执行以下命令
cat ~/.ssh/id_rsa.pub >> authorized_keys
最后执行ssh localhost
进行测试,成功显示如下
2、环境变量配置
在java和hadoop安装完成之后,接着配置环境变量。首先执行
vim /etc/profile
接着在文件下方配置环境变量即可
export JAVA_HOME=/usr/java/jdk1.8.0_221-amd64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export HADOOP_HOME=/usr/local/hadoop-2.10.1
export PATH=$PATH:${JAVA_HOME}/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
将JAVA_HOME和HADOOP_HOME替换为自己的安装路径即可,接着运行
source /etc/profile
配置文件生效后,分别运行java -version
和hadoop version
查看jdk和hadoop是否安装配置成功,如下图所示
3、配置集群
配置详情可参考https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html
首先进入hadoop安装目录下,然后进入bin/hadoop文件夹下,所有的配置文件都在该文件夹中
配置hadoop.env.sh,将其中的JAVA_HOME修改为自己的。
配置core-site.xml,将如下代码复制进去即可。hadoop.tmp.dir的目录可根据自己的喜好来配置
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop-2.10.1/data/tmp</value>
</property>
配置hdfs-site.xml,添加如下代码即可
<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
4、启动集群
在hadoop安装目录下执行以下命令。
格式化NameNode(第一次启动格式化就行了,如果没有特殊情况以后都不要再格式化了)
bin/hdfs namenode -format
执行成功,如图所示
启动NameNode
sbin/hadoop-daemon.sh start namenode
启动成功如下所示
启动DataNode
sbin/hadoop-daemon.sh start datanode
启动成功如下所示
5、查看集群是否启动成功
在hadoop安装目录下执行jps
命令查看进程,如果NameNode和DataNode启动成功如下图所示
接着在浏览器中可以查看web页面,端口为50070
5、操作集群
(1)在HDFS上创建一个input文件夹
bin/hdfs dfs -p /user/myfile/input
(2)查看文件夹是否创建成功,执行命令bin/hdfs dfs -ls -R /
,结果如下图所示,可以看到已经创建成功
(3)在本地创建一个文件,我这边的文件在/usr/local/hadooptest文件夹下创建了一个名为test的文件,文件内容如下
(4)运行下面的命令将这个文件上传到上方创建的input文件夹中
bin/hdfs dfs -put /usr/local/hadooptest/test /user/myfile/input
(5)运行下面的命令查看文件是否上传成功
bin/hdfs dfs -ls /user/myfile/input
可以看到已经上传成功
(6)运行MapReduce程序
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/myfile/input/test /user/myfile/output
运行完成后,执行bin/hdfs dfs -ls /user/myfile
查看在/user/myfile文件夹下生成的output文件夹,如图所示
接下来执行bin/hdfs dfs -ls /user/myfile/output
查看output文件夹中有什么东西,如图所示
最后运行bin/hdfs dfs -cat /user/myfile/output/part-r-00000
查看执行结果
至此,简单的伪分布式集群搭建完成了。接下来配置yarn
首先配置yarn-env.sh,修改其中的JAVA_HOME,进入hadoop安装目录下执行vim etc/hadoop/yarn-env.sh
接着配置yarn-site.xml,执行vim etc/hadoop/yarn-site.xml
,添加如下代码
<!-- Reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 value的值为自己的主机名-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>HackerSM</value>
</property>
配置mapred-env.sh,修改JAVA_HOME,执行vim etc/hadoop/mapred-env.sh
配置mapred-site.xml.template,执行mv etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
重命名为mapred-site.xml,接着执行vim etc/mapred-site.xml
,添加如下代码
<!-- 指定MR运行在YARN上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
启动集群(必须保证NameNode和DataNode已经启动)
执行sbin/yarn-daemon.sh start resourcemanager
启动ResourceManeger
执行sbin/yarn-daemon.sh start nodemaneger
启动NodeManager
执行jps
命令查看进程,ResourceManager和NodeManager已经启动
查看yarn的web页面,端口号为8088
测试yarn
首先删除HDFS中的output文件夹,如果没有就不需要删除,这边是因为上面测试wordcount建了一个output文件夹
bin/hdfs dfs -rm -r /user/myfile/output
(如果没有output文件夹则不须执行)
执行bin/hdfs dfs -ls -R /
查看hdfs中所有的文件夹,结果如下
执行MapReduce程序
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.1.jar wordcount /user/myfile/input /user/myfile/output
可以在yarn的web页面看到已经执行成功
再执行bin/hdfs dfs -cat /user/myfile/output/part-r-00000
,可以看到执行结果
至此,yarn配置完成,接下来配置历史服务器
首先配置mapred-site.xml,在该文件中添加如下代码
<!-- value的值为主机名:端口号 -->
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>HackerSM:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>HackerSM:19888</value>
</property>
启动历史服务器
sbin/mr-jobhistory-daemon.sh start historyserver
使用jps
查看进程
访问历史服务器web页面,端口号为19888
最后配置日志聚集
首先执行vim etc/hadoop/yarn-site.xml
,然后添加如下代码
<!-- 日志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
开启日志聚集功能需要重新启动ResourceManager、NodeManager和HistoryServer
关闭ResourceManager、NodeManager和HistoryServer,执行如下命令
sbin/yarn-daemon.sh stop resourcemanager
sbin/yarn-daemon.sh stop nodemanager
sbin/mr-jobhistory-daemon.sh stop historyserver
再一次启动ResourceManager、NodeManager和HistoryServer,执行如下命令
sbin/yarn-daemon.sh start resourcemanager
sbin/yarn-daemon.sh start nodemanager
sbin/mr-jobhistory-daemon.sh start historyserver
删除HDFS上的output文件夹,如果在HDFS中没有output文件夹,可跳过
bin/hdfs dfs -rm -r /user/myfile/output
最后在执行一遍wordcount程序
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.1.jar wordcount /user/myfile/input /user/myfile/output
可以看到刚刚执行的wordcount程序
点击上图中的Job ID查看运行情况
点击上图中的logs即可查看日志
至此,伪分布式集群已经完全搭建完毕!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。