Hadoop之配置伪分布式集群
1、配置Hadoop环境变量
[hadoop@bigdata-senior01 hadoop]# vim /etc/profile
追加配置:
export HADOOP_HOME="/opt/modules/hadoop-2.9.0"
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
执行:source /etc/profile
使得配置生效
验证HADOOP_HOME参数:
[root@izuf61z1rt2fvuhr3u07s0z ~]# echo $HADOOP_HOME
/opt/modules/hadoop-2.9.0
2、 配置 hadoop-env.sh、mapred-env.sh、yarn-env.sh文件的JAVA_HOME参数
vim ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh
修改JAVA_HOME参数为:
export JAVA_HOME="/opt/modules/jdk1.7.0_79"
3、 配置core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/data/tmp</value>
</property>
</configuration>
1、 fs.defaultFS参数配置的是HDFS的地址。
2、 hadoop.tmp.dir配置的是Hadoop临时目录,比如HDFS的NameNode数据默认都存放这个目录下,查看*-default.xml等默认配置文件,就可以看到很多依赖${hadoop.tmp.dir}的配置。
默认的hadoop.tmp.dir是/tmp/hadoop-${user.name},此时有个问题就是NameNode会将HDFS的元数据存储在这个/tmp目录下,如果操作系统重启了,系统会清空/tmp目录下的东西,导致NameNode元数据丢失,是个非常严重的问题,所有我们应该修改这个路径。
创建临时目录:
mkdir -p /opt/data/tmp
将临时目录的所有者修改为hadoop
sudo chown –R hadoop:hadoop /opt/data/tmp
4、 配置hdfs-site.xml
vim ${HADOOP_HOME}/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/data/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/data/tmp/dfs/data</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
</configuration>
dfs.replication配置的是HDFS存储时的备份数量,因为这里是伪分布式环境只有一个节点,所以这里设置为1。
一开始没有配置dfs.namenode.name.dir和dfs.datanode.data.dir,导致后面namenode没有启动成功,没有配置dfs.permissions.enabled导致上传文件到hdfs权限错误。
5、格式化HDFS
bin/hdfs namenode –format
格式化是对HDFS这个分布式文件系统中的DataNode进行分块,统计所有分块后的初始元数据的存储在NameNode中。
格式化后,查看core-site.xml里hadoop.tmp.dir(本例是/opt/data目录)指定的目录下是否有了dfs目录,如果有,说明格式化成功。
注意:
1、格式化时,这里注意hadoop.tmp.dir目录的权限问题,应该hadoop普通用户有读写权限才行,可以将/opt/data的所有者改为hadoop。
sudo chown -R hadoop:hadoop /opt/data
2、查看NameNode格式化后的目录。
ll /opt/data/tmp/dfs/name/current
-rw-rw-r-- 1 hadoop hadoop 399 Jan 27 16:10 fsimage_0000000000000000012
-rw-rw-r-- 1 hadoop hadoop 62 Jan 27 16:10 fsimage_0000000000000000012.md5
-rw-rw-r-- 1 hadoop hadoop 3 Jan 27 16:10 seen_txid
-rw-rw-r-- 1 hadoop hadoop 217 Jan 27 15:06 VERSION
fsimage是NameNode元数据在内存满了后,持久化保存到的文件。
fsimage*.md5 是校验文件,用于校验fsimage的完整性。
seen_txid 是hadoop的版本
vession文件里保存:
namespaceID:NameNode的唯一ID。
clusterID:集群ID,NameNode和DataNode的集群ID应该一致,表明是一个集群。
6、启动
启动NameNode
${HADOOP_HOME}/sbin/hadoop-daemon.sh start namenode
启动DataNode
${HADOOP_HOME}/sbin/hadoop-daemon.sh start datanode
启动SecondaryNameNode
${HADOOP_HOME}/sbin/hadoop-daemon.sh start secondarynamenode
JPS命令查看是否已经启动成功,有结果就是启动成功了。
[root@izuf61z1rt2fvuhr3u07s0z hadoop-2.9.0]# jps
2913 Jps
2327 SecondaryNameNode
2158 DataNode
2025 NameNode
还没有评论,来说两句吧...