Hadoop有三种模式

  • Local (Standalone) Mode
  • Pseudo-Distributed Mode (伪分布模式)
  • Fully-Distributed Mode (完全分布模式)

一、Pseudo-Distributed Mode (伪分布模式)搭建

注意事项:

  • 配置节点时,避免使用ip地址,改用对应的host name,官方也建议这样做(好像使用ip有bug)

1、搭建前准备

  • 安装JDK,配置环境变量
  • 安装ssh,设置免登陆
  • 检查 /etc/hosts 文件配置无误(确保使用hostname时能正常通讯)
  • 检查 /etc/sysconfig/network 的HOSTNAME与上一条的是否一致

如下所示,hostname都为node02

[root@node02 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.9.12 node02
[root@node02 ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=node02

设置ssh登录免秘钥,生成了 id_dsa(私钥)和 id_dsa.pub(公钥)两个秘钥。

[root@node02 ~]# ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 
[root@node02 ~]# ll .ssh/
total 16
-rw-------. 1 root root  668 Jun 11 19:28 id_dsa
-rw-r--r--. 1 root root  601 Jun 11 19:28 id_dsa.pub
-rw-r--r--. 1 root root 1574 Jun 11 19:32 known_hosts

#当对方机器上持有自己的公钥时,就能ssh免登录对方的机器机器,登陆自身免密执行如下命令 
[root@node02 .ssh]# cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

 

2、安装hadoop,进行简单配置

  • 我是用的是hadoop2.6.5这个版本,主要是方便和spark使用。

(1)解压

[root@node02 ~]# tar -zxvf hadoop-2.6.5.tar.gz

(2)解压后就可以使用了,为了方便管理,拷贝hadoop目录至其他目录

[root@node02 ~]# mv hadoop-2.6.5 /opt

(3)配置hadoop的环境变量,如下(配置完后记得刷新生效)

[root@node02 ~]# tail -3 /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
export HADOOP_HOME=/opt/hadoop-2.6.5
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

(4)修改 hadoop 配置文件,在-env.sh 文件中配置JAVA_HOME,因为通过ssh远程调hadoop、java命令时,linux系统不会读取/etc/profile文件,所以取不到 JAVA_HOME

[root@node02 hadoop]# cd /opt/hadoop-2.6.5/etc/hadoop/ 
#以下 3 个文件中修改或添加 export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
[root@node02 hadoop]# vi hadoop-env.sh 
[root@node02 hadoop]# vi mapred-env.sh  
[root@node02 hadoop]# vi yarn-env.sh

 

3、配置hadoop,规划节点

(1)修改 hadoop-2.6.5/etc/hadoop 目录下的三个文件

  • core-site.xml
  • hdfs-site.xml
  • slaves

core-site.xml 简单配置

[root@node02 hadoop]# vim core-site.xml
<configuration>
	<!--设置 NameNode 所在节点的访问入口--> 
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node02:9000</value>
    </property>
    <!--设置 hadoop 存放数据的临时目录--> 
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/var/wjx/hadoop/pseudo</value>
    </property>
</configuration>

注意: Hadoop 默认把数据块的元数据和数据存放在操作系统的/tmp 目录下,但操作系统的/tmp 目录达到系统阈值会自动清空,所以要做修改。根据下表的描述,只要配置hadoop.tmp.dir就行,后面两个自动引用hadoop.tmp.dir配置的地址。实际使用可能需要进行分别配置,以便于管理。

name

value

hadoop.tmp.dir

/tmp/hadoop-${user.name}

dfs.namenode.name.dir

file://${hadoop.tmp.dir}/dfs/name

dfs.datanode.data.dir

file://${hadoop.tmp.dir}/dfs/data

hdfs-site.xml 简单配置

[root@node02 hadoop]# vim hdfs-site.xml
<configuration>
	<!--设置block块的副本数,注意不能超过节点数--> 
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <!—设置 SecondaryNameNode 在哪个节点,hadoop2.X后不再有SNN--> 
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>node02:50090</value>
    </property>
</configuration>

slaves 配置DataNode节点

[root@node02 hadoop]# vim slaves 
node02

 

(2)格式化NameNode

[root@node02 hadoop]# hdfs namenode –format 
#成功信息:
Storage directory /var/wjx/hadoop/pseudo/dfs/name has been successfully formatted.

 

(3)启动hdfs系统,查看进程是否启动成功

[root@node02 ~]# start-dfs.sh
Starting namenodes on [node02]
node02: starting namenode, logging to /opt/hadoop-2.6.5/logs/hadoop-root-namenode-node02.out
node02: starting datanode, logging to /opt/hadoop-2.6.5/logs/hadoop-root-datanode-node02.out
Starting secondary namenodes [node02]
node02: starting secondarynamenode, logging to /opt/hadoop-2.6.5/logs/hadoop-root-secondarynamenode-no
de02.out[root@node02 ~]# jps
1427 Bootstrap
3319 NameNode
3592 SecondaryNameNode
3436 DataNode
3709 Jps
[root@node02 current]# cd /var/wjx/hadoop/pseudo/dfs/data/current 
[root@node02 current]# vi VERSION 
#Wed Jun 12 08:32:52 CST 2019 
storageID=DS-4fd6b46c-6567-4875-9dcf-17577873d372 
#与 name 下的 VERSION 中的 clusterID 相同,否则 NN 与 DN 不会通信 
clusterID=CID-e2d83b00-0c46-45b2-9f86-e824c42795e8  
cTime=0 
datanodeUuid=e18d8595-35b6-40b3-9dde-abc56f90c77b 
storageType=DATA_NODE 
layoutVersion=-56

 

(4)输入地址验证 http://node02:50070 至此,伪分布模式搭建完成

hadoop 本地构建 hadoop的三种搭建方式_hadoop 本地构建


 

(5)给hdfs创建目录,p表示多层目录,user类似于linux的home目录

[root@node02 ~]# hdfs dfs -mkdir -p /user/root

 

(6)上传文件,如果

[root@node02 ~]# hdfs dfs -put hadoop-2.6.5.tar.gz /user/root

 

(7)按设置的block块大小上传文件,D表示使用属性,dfs.blocksize为属性名表示block块大小(单位Byte)

[root@node02 ~]# hdfs dfs -D dfs.blocksize=1048576 filetest.txt 


[root@node02 ~]# hdfs dfs -D dfs.blocksize=1048576 -put filetest.txt /tmp

hadoop 本地构建 hadoop的三种搭建方式_hdfs_02


未完待续