您好,登录后才能下订单哦!
本篇内容介绍了“Hadoop怎么实现伪分布模式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
伪分布模式是运行在单个节点以及多个Java进程上的模式。相比起本地模式,需要进行更多配置文件的设置以及ssh
、YARN
相关设置。
Hadoop
配置文件修改Hadoop
安装目录下的三个配置文件:
etc/hadoop/core-site.xml
etc/hadoop/hdfs-site.xml
etc/hadoop/hadoop-env.sh
core-site.xml
首先修改core-site.xml
:
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop/tmp</value> </property> </configuration>
fs.defaultFS
设置的是HDFS
的地址,设置运行在本地的9000
端口上
hadoop.tmp.dir
设置的是临时目录,如果没有设置的话默认在/tmp/hadoop-${user.name}
中,系统重启后会导致数据丢失,因此修改这个临时目录的路径
接着创建该临时目录:
mkdir -p /usr/local/hadoop/tmp
hdfs-site.xml
接着修改hdfs-site.xml
:
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
dfs.replication
设置的是HDFS
存储的临时备份数量,因为伪分布模式中只有一个节点,所以设置为1
。
hadoop-env.sh
修改该文件添加JAVA_HOME
环境变量,就算JAVA_HOME
在
~/.bashrc
~/.bash_profile
/etc/profile
等中设置了,运行时也是会提示找不到JAVA_HOME
,因此需要手动在hadoop-env.sh
中设置JAVA_HOME
:
ssh
连接下一步需要设置本地无密码ssh
连接,首先先检查确保开启sshd
服务:
systemctl status sshd
开启后可以直接localhost
连接:
ssh localhost
输入自己的用户密码后就可以访问了,但是这里需要的是无密码连接,因此配置密钥认证连接的方式:
ssh-keygen -t ed25519 -a 100 cat ~/.ssh/id_25519.pub >> ~/.ssh/authorized_keys chmod 0600 ~/.ssh/authorized_keys
这里生成公私钥后把公钥添加到authorized_keys
中,并且修改权限,需要注意600
权限,只能本用户有写权限。
然后直接ssh localhost
就可以连接本地主机了。
HDFS
这里以单一节点的模式运行,首先格式化HDFS
:
# HADOOP为Hadoop安装目录 HADOOP/bin/hdfs namenode -format
格式化是对HDFS
中的DataNode
进行分块,统计所有分块后的初始元数据,存储在NameNode
中。
格式化成功后会在上面配置文件中设置的临时目录中生成dfs
目录,如下所示:
里面只有一个目录:dfs/name/current
,其中tmp/dfs/name/current
的文件如下:
文件说明如下:
fsimage
:NameNode
元数据在内存满后,持久化保存到的文件
fsimage*.md5
:校验文件,用于校验fsimage
的完整性
seen_txid
:存放transactionID
文件,format
之后为0,表示NameNode
里面的edits_*
文件的尾数
VERSION
:保存创建时间,namespaceID
、blockpoolID
、storageType
、cTime
、clusterID
、layoutVersion
关于VERSION
的说明:
namespaceID
:HDFS
唯一标识符,在HDFS
首次格式化后生成
blockpoolID
:标识一个block pool
,跨集群全局唯一
storageType
:存储什么进程的数据结构信息
cTime
:创建时间
clusterID
:系统生成或指定的集群ID
,可以使用-clusterid
指定
layoutVersion
:表示HDFS
永久性数据结构版本的信息
NameNode
HADOOP/sbin/start-dfs.sh
然后可以通过
localhost:9870
访问NameNode
:
生成输入目录,并使用配置文件作为输入:
bin/hdfs dfs -mkdir /user bin/hdfs dfs -mkdir /user/USER_NAME # USER_NAME为您的用户名 bin/hdfs dfs -mkdir input bin/hdfs dfs -put etc/hadoop/*.xml input
测试:
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar grep input output 'dfs[a-z.]+'
获取输出:
bin/hdfs dfs -get output output # 复制输出到output目录 cat output/*
停止:
sbin/stop-hdfs.sh
YARN
配置除了可以将单个节点以伪分布模式启动,还可以通过YARN
统一调度,只需要适当修改配置文件。
修改以下文件:
HADOOP/etc/hadoop/mapred-site.xml
HADOOP/etc/hadoop/yarn-site.xml
mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.application.classpath</name> <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value> </property> </configuration>
mapreduce.framework.name
指定了MapReduce
运行在YARN
上
mapreduce.application.classpath
指定了类路径
yarn-site.xml
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.env-whitelist</name> <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value> </property> </configuration>
yarn.nodemanager.aux-services
:运行在NodeManager
上运行的附属服务
yarn.nodemanager.env-whitelist
:环境变量通过从NodeManagers
的容器继承的环境属性
sbin/start-yarn.sh
运行后就可以通过
localhost:8088
访问:
停止:
sbin/stop-yarn.sh
“Hadoop怎么实现伪分布模式”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。