(3)hadoop系列之hadoop伪分布式模式部署

感谢朋友支持本博客,欢迎共同探讨交流,由于能力和时间有限,错误之处在所难免,欢迎指正!

如果转载,请保留作者信息。

hadoop系列之hadoop伪分布式模式部署

hadoop伪分布式部署

伪分布式并不是真的分布式,这种模式是在一台机器上各个进程运行在Hadoop的各个模块上,各个进程是分开运行的,但是它们运行在同一操作系统上的,同一台机器上。

1、解压hadoop软件包

[root@hadoop softwares]# tar -zxvfhadoop-2.5.0-cdh5.3.6.tar.gz   -C /opt/modules/

2、创建一个普通用户

[root@hadoop ~]# useradd hadoop   创建一个hadoop普通用户

[root@hadoop ~]# passwd hadoop    为hadoop用户设置命名,密码为redhat

Changing password for user hadoop.

New password:

BAD PASSWORD: it is based on a dictionaryword

BAD PASSWORD: is too simple

Retype new password:

passwd: all authentication tokens updatedsuccessfully.

给hadoop用户sudo权限: vi /etc/sudoers

root    ALL=(ALL)       ALL

hadoop ALL=(root)   NOPASSWD:ALL

注意:生产环境一定要注意普通用户的权限限制

将hadoop文件夹的所有者指定为hadoop用户

如果存放hadoop的目录的所有者不是hadoop,之后hadoop运行中可能会有权限问题,那么就讲所有者改为hadoop。

[root@hadoop ~]# chown -R hadoop:hadoop /opt/modules/

3、配置Hadoop环境变量:vi /etc/profile,配置文明后面追加两行

exportHADOOP_HOME="/opt/modules/hadoop-2.5.0-cdh5.3.6/"

exportPATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

[root@hadoop ~]# source/etc/profile   执行source命令使配置生效

 

 

验证HADOOP_HOME参数

[root@hadoop ~]# echo $HADOOP_HOME

/opt/modules/hadoop-2.5.0-cdh5.3.6/

4、配置hadoop-env.shmapred-env.shyarn-env.sh文件的JAVA_HOME环境变量

[root@hadoop hadoop-2.5.0-cdh5.3.6]# pwd

/opt/modules/hadoop-2.5.0-cdh5.3.6

[root@hadoop hadoop-2.5.0-cdh5.3.6]# vi etc/hadoop/hadoop-env.sh

[root@hadoop hadoop-2.5.0-cdh5.3.6]# vietc/hadoop/mapred-env.sh

[root@hadoophadoop-2.5.0-cdh5.3.6]# vi etc/hadoop/yarn-env.sh

修改三个环境变量的JAVA_HOME参数为:

export JAVA_HOME="/opt/modules/jdk1.7.0_79"

5、修改hadoop配置文件

[root@hadoop hadoop-2.5.0-cdh5.3.6]# vietc/hadoop/core-site.xml

<configuration>

    <property>

        <name>fs.defaultFS</name>

        <value>hdfs://hadoop.bigdata.com:8020</value>

    </property>

    <property>

        <name>hadoop.tmp.dir</name>

        <value>/home/data/tmp</value>

    </property>

</configuration>

[root@hadoop hadoop-2.5.0-cdh5.3.6]# mkdir -p /home/data/tmp  

[root@hadoop hadoop-2.5.0-cdh5.3.6]# chown -R hadoop:hadoop/home/data/tmp

注意:fs.defaultFS参数配置的是HDFS的访问地址,默认的hadoop.tmp.dir/tmp/hadoop-${user.name},此时有个问题就是NameNode会将HDFS的元数据存储在这个/tmp目录下,如果操作系统重启了,系统会清空/tmp目录下的东西,导致NameNode元数据丢失,是个非常严重的问题,所有我们应该修改这个路径。

 配置hdfs-site.xml

[root@hadoop hadoop-2.5.0-cdh5.3.6]# vi etc/hadoop/hdfs-site.xml

<configuration>

    <property>

        <name>dfs.replication</name>

        <value>1</value>

    </property>

</configuration>

因为这里是伪分布式环境,只有一个节点, HDFS存储时的备份数量这里设置为1。

6、格式化HDFS

[root@hadoop hadoop-2.5.0-cdh5.3.6]# bin/hdfs  namenode -format

格式化是对HDFS这个分布式文件系统中的DataNode进行分块,统计所有分块后的初始元数据的存储在NameNode中。

格式化后,查看core-site.xmlhadoop.tmp.dir(本例是/home/data/tmp目录)指定的目录下是否有了dfs目录,如果有,说明格式化成功。

[root@hadoop hadoop-2.5.0-cdh5.3.6]# ls -l /home/data/tmp

total 4

drwxr-xr-x 3 root root 4096 Mar 19 21:27 dfs

                        

[root@hadoop hadoop-2.5.0-cdh5.3.6]# ls -l/home/data/tmp/dfs/name/current/

total 16

-rw-r--r-- 1 root root 351 Mar 19 21:27 fsimage_0000000000000000000

-rw-r--r-- 1 root root 62 Mar 19 21:27 fsimage_0000000000000000000.md5

-rw-r--r-- 1 root root  2 Mar 19 21:27 seen_txid

-rw-r--r-- 1 root root 203 Mar 19 21:27 VERSION

fsimage是NameNode元数据在内存满了后,持久化保存到的文件。

fsimage*.md5 是校验文件,用于校验fsimage的完整性。

seen_txid 是hadoop的版本

vession文件里保存:

namespaceIDNameNode的唯一ID

clusterID:集群IDNameNode和DataNode的集群ID应该一致,表明是一个集群。

[root@hadoop hadoop-2.5.0-cdh5.3.6]# cat  /home/data/tmp/dfs/name/current/VERSION

#Mon Mar 19 21:27:10 EDT 2018

namespaceID=463572925    NameNode的唯一ID

clusterID=CID-59416b37-322b-40bc-b8d4-c5e7795c8935集群ID,namenode和datanode集群ID相同

cTime=0

storageType=NAME_NODE

blockpoolID=BP-1469574068-10.20.30.75-1521509230503

layoutVersion=-59

[root@hadoop hadoop-2.5.0-cdh5.3.6]# sbin/hadoop-daemon.shstart  namenode    启动namenode

starting namenode, logging to/opt/modules/hadoop-2.5.0-cdh5.3.6/logs/hadoop-root-namenode-hadoop.bigdata.com.out

[root@hadoop hadoop-2.5.0-cdh5.3.6]# sbin/hadoop-daemon.shstart  datanode     启动datanode

starting datanode, logging to/opt/modules/hadoop-2.5.0-cdh5.3.6/logs/hadoop-root-datanode-hadoop.bigdata.com.out

[root@hadoop hadoop-2.5.0-cdh5.3.6]# sbin/hadoop-daemon.shstart secondarynamenode

starting secondarynamenode, logging to/opt/modules/hadoop-2.5.0-cdh5.3.6/logs/hadoop-root-secondarynamenode-hadoop.bigdata.com.out

[root@hadoop hadoop-2.5.0-cdh5.3.6]# jps    查看相关进程是否启动成功

7087 Jps

6876 DataNode

6827 NameNode

7033 SecondaryNameNode

7、HDFS功能测试(创建目录、上传、下载文件)

[root@hadoop hadoop-2.5.0-cdh5.3.6]# bin/hdfsdfs  -mkdir /test2     创建目录

18/03/19 22:47:17 WARN util.NativeCodeLoader: Unable to loadnative-hadoop library for your platform... using builtin-java classes whereapplicable

[root@hadoop hadoop-2.5.0-cdh5.3.6]#bin/hdfs dfs -ls /      查看是否创建成功

18/03/19 22:47:40 WARN util.NativeCodeLoader: Unable to loadnative-hadoop library for your platform... using builtin-java classes whereapplicable

Found 2 items

drwxr-xr-x   - rootsupergroup          0 2018-03-19 22:45/test

drwxr-xr-x   - rootsupergroup          0 2018-03-19 22:47/test2

上传文件到hdfs文件系统上

[root@hadoop hadoop-2.5.0-cdh5.3.6]#bin/hdfs dfs -put etc/hadoop/*.xml /test2

[root@hadoop hadoop-2.5.0-cdh5.3.6]# bin/hdfs dfs -ls /test2

Found 8 items

-rw-r--r--   1 rootsupergroup       3589 2018-03-19 22:50/test2/capacity-scheduler.xml

-rw-r--r--   1 rootsupergroup        998 2018-03-19 22:50/test2/core-site.xml

-rw-r--r--   1 rootsupergroup       9201 2018-03-19 22:50/test2/hadoop-policy.xml

-rw-r--r--   1 rootsupergroup        867 2018-03-19 22:50/test2/hdfs-site.xml

-rw-r--r--   1 rootsupergroup        620 2018-03-19 22:50/test2/httpfs-site.xml

-rw-r--r--   1 rootsupergroup       3523 2018-03-19 22:50/test2/kms-acls.xml

-rw-r--r--   1 rootsupergroup       5511 2018-03-19 22:50/test2/kms-site.xml

-rw-r--r--   1 rootsupergroup        690 2018-03-19 22:50/test2/yarn-site.xml

 读取HDFS上的文件内容

[root@hadoop hadoop-2.5.0-cdh5.3.6]# bin/hdfsdfs -cat /test2/yarn-site.xml

从HDFS上下载文件到/tmp目录下

[root@hadoop hadoop-2.5.0-cdh5.3.6]# bin/hdfsdfs -get /test2/yarn-site.xml  /tmp  下载到/tmp目录下

8、配置yarn

默认没有mapred-site.xml文件,但是有个mapred-site.xml.template配置模板文件。复制模板生成mapred-site.xml。

[root@hadoop hadoop-2.5.0-cdh5.3.6]# cpetc/hadoop/mapred-site.xml.template  etc/hadoop/mapred-site.xml

[root@hadoop hadoop-2.5.0-cdh5.3.6]# vietc/hadoop/mapred-site.xml

<configuration>

   <property>

       <name>mapreduce.framework.name</name>

       <value>yarn</value>

   </property>

</configuration>

指定mapreduce运行在yarn框架上。

[root@hadoop hadoop-2.5.0-cdh5.3.6]# vietc/hadoop/yarn-site.xml

<configuration>

    <property>

        <name>yarn.nodemanager.aux-services</name>

       <value>mapreduce_shuffle</value>

    </property>

    <property>

   <name>yarn.resourcemanager.hostname</name>

<value>hadoop.bigdata.com</value>

</property>

</configuration>

yarn.nodemanager.aux-services配置了yarn的默认混洗方式,选择为mapreduce的默认混洗算法。

yarn.resourcemanager.hostname指定了Resourcemanager运行在哪个节点上。

9、启动yarn

[root@hadoop hadoop-2.5.0-cdh5.3.6]# sbin/yarn-daemon.sh  start resourcemanager

starting resourcemanager, logging to /opt/modules/hadoop-2.5.0-cdh5.3.6/logs/yarn-root-resourcemanager-hadoop.bigdata.com.out

[root@hadoop hadoop-2.5.0-cdh5.3.6]# sbin/yarn-daemon.shstart nodemanager

starting nodemanager, logging to/opt/modules/hadoop-2.5.0-cdh5.3.6/logs/yarn-root-nodemanager-hadoop.bigdata.com.out

[root@hadoop hadoop-2.5.0-cdh5.3.6]#jps

6876 DataNode

6827 NameNode

8108 ResourceManager

7033 SecondaryNameNode

8478 Jps

8358 NodeManager

可以看到ResourceManager、NodeManager已经启动成功了。

 

[root@hadoop hadoop-2.5.0-cdh5.3.6]# bin/hdfsdfs  -rmr /user/root/out*    删除数据

YARNWeb页面

 

 

 

10 运行MapReduce job 体验hadoop平台

Hadoopshare目录里,自带了一些jar包,里面带有一些mapreduce实例小例子,位置在share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar,可以运行这些例子体验刚搭建好的Hadoop平台,我们这里来运行最经典的WordCount实例。

[root@hadoop hadoop-2.5.0-cdh5.3.6]# bin/hdfs dfs-mkdir -p /file/input  创建测试用输入目录

[root@hadoop hadoop-2.5.0-cdh5.3.6]# bin/hdfs dfs-put etc/hadoop/*.xml  /file/input  上传测试文件

[root@hadoop]# bin/hadoop jarshare/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0-cdh5.3.6.jar grep/file/input  output 'dfs[a-z.]+'

 

[root@hadoop hadoop-2.5.0-cdh5.3.6]# bin/hadoop  jarshare/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0-cdh5.3.6.jar  wordcount  /test2/yarn-site.xml   output2

ls -l 命令可以在当前目录下看到一个output2目录,里面是作业任务输出结果

output2目录中有两个文件,_SUCCESS文件是空文件,有这个文件说明Job执行成功。

part-r-00000文件是结果文件,其中-r-说明这个文件是Reduce阶段产生的结果,mapreduce程序执行时,可以没有reduce阶段,但是肯定会有map阶段,如果没有reduce阶段这个地方有是-m-。

一个reduce会产生一个part-r-开头的文件。

 

11、开启日志聚集

MapReduce是在各个机器上运行的,在运行过程中产生的日志存在于各个机器上,为了能够统一查看各个机器的运行日志,将日志集中存放在HDFS上,这个过程就是日志聚集。

Hadoop默认是不启用日志聚集的。在yarn-site.xml文件里配置启用日志聚集。

 

配置日志聚集功能:

[root@hadoop hadoop-2.5.0-cdh5.3.6]# vietc/hadoop/yarn-site.xml

<property>

   <name>yarn.log-aggregation-enable</name>

   <value>true</value>

 </property>

 <property>

  <name>yarn.log-aggregation.retain-seconds</name>

  <value>106800</value>

   </property>

 

yarn.log-aggregation-enable:是否启用日志聚集功能。

yarn.log-aggregation.retain-seconds:设置日志保留时间,单位是秒。

 

12、重启Yarn进程HistoryServer进程:

[root@hadoop hadoop-2.5.0-cdh5.3.6]# sbin/stop-yarn.sh      关闭yarn

[root@hadoop hadoop-2.5.0-cdh5.3.6]#sbin/start-yarn.sh     启动yarn

[root@hadoop hadoop-2.5.0-cdh5.3.6]#sbin/mr-jobhistory-daemon.sh start historyserver  启动日志服务

启动服务后,点击history按钮就可以打开日志了

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

远虑近忧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值