2,Hadoop环境搭建之本地模式

二次JDK配置的原因:

Ssh命令远程调用其它结点的时候,不会加载/etc/profile文件。我们一般部署JDK的时候将JAVA_HOME写在profile文件中,hadoop需要jdk,远程脚本启动其它结点的时候会失败。需要在hadoop中再做二次jdk配置。(就是因为远程调用对方的时候不会加载对方的etc/profile文件导致拿不到JAVA_HOME)

集群配置步骤分析:

分三步1,操作系统环境的配置。2,hadoop配置文件的配置。3,格式化启动hadoop角色。

1,操作系统环境配置

  (1)JDK配置

export JAVA_HOME=/usr/java/jdk1.7.0_45
export PATH=$PATH:$JAVA_HOME/bin

  (2)ssh安装

yum -y install openssh-clients

  (3)免秘钥配置

[root@node01 .ssh]# ssh-keygen -t dsa -P '' -f ./id_dsa    (生成公钥密钥文件)
[root@node01 .ssh]# cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys   (读取自己的公钥追加记录到authorized_keys认证文件中) 当我们ssh localhost的时候,会拿着id_dsa.pub去找本机的authorized_keys认证

2,hadoop本地模式部署配置

   (1)创建目录文件,将hadoop安装包解压到指定目录

[root@node01 hadoop-2.6.5]# mkdir /opt/sxt
[root@node01 hadoop-2.6.5]# tar -zxvf hadoop-2.6.5.tar.gz -C /opt/sxt/


解压后目录结构为:

drwxr-xr-x. 2 root root  4096 5月  24 2017 bin       hadoop项目中的功能
drwxr-xr-x. 3 root root  4096 5月  24 2017 etc 	       hadoop配置文件
drwxr-xr-x. 2 root root  4096 5月  24 2017 include
drwxr-xr-x. 3 root root  4096 5月  24 2017 lib
drwxr-xr-x. 2 root root  4096 5月  24 2017 libexec
-rw-r--r--. 1 root root 84853 5月  24 2017 LICENSE.txt
-rw-r--r--. 1 root root 14978 5月  24 2017 NOTICE.txt
-rw-r--r--. 1 root root  1366 5月  24 2017 README.txt
drwxr-xr-x. 2 root root  4096 5月  24 2017 sbin         操作系统启停服务管理脚本
drwxr-xr-x. 4 root root  4096 5月  24 2017 share		    jar包

   (2)配置hadoop的环境变量,以便可以在任何目录执行hadoop命令

export HADOOP_PREFIX=/opt/sxt/hadoop-2.6.5
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin

   (3)Hadoop中做jdk二次配置(由于ssh远程调用的时候/etc/profile文件不会被加载) 

[root@node01 hadoop]# pwd
/opt/sxt/hadoop-2.6.5/etc/hadoop

[root@node01 hadoop]# echo $JAVA_HOME
/usr/java/jdk1.7.0_45

配置  hadoop-env.sh,yarn-env.sh,mapred-env.sh 中JAVA_HOME

  (4)调整配置文件规划hadoop角色

            1),规划NameNode位置

etc/hadoop/core-site.xml(规划NameNode在哪里):   默认文件系统入口,服务脚本启动集群的时候读到这里就知道NameNode在哪里启动了,启动时候占用9000端口通信。DataNode和NameNode通信的时候也能找到。
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node01:9000</value>
    </property>
</configuration>

         2),etc/hadoop/hdfs-site.xml(副本数量):

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

       3),DataNode 通过slaves规划

       4),SecondaryNameNode的规划  hdfs-site.xml

<property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>node01:50090</value>
</property>

   5),由于Hadoop的临时文件存储目录在系统的tmp目录下,随时有可能被系统自己删掉,需要自己单独设置位置。core-site.xml

<property>
        <name>hadoop.tmp.dir</name>
        <value>/var/sxt/hadoop/local</value>
</property>

到目前为止,NameNode在node01,DataNode在node01,SecondaryNameNode也在node01,角色都规划好了,磁盘存放文件的目录也规划好了。 

3,格式化NameNode启动集群

Hdfs namenode -format 执行格式化NameNode操作

[root@node01 current]# cat VERSION 
#Fri Sep 28 01:46:39 CST 2018
namespaceID=1211221902
clusterID=CID-76a23f89-3eff-45a5-97cd-a43ac1bb125f
cTime=0
storageType=NAME_NODE
blockpoolID=BP-1418018278-192.168.25.201-1538070399463
layoutVersion=-60

当我们搭建完全分布式,不是在一个进程中的多线程时,或者一个大的局域网中可以搭建两套甚至多套hadoop集群,那么如何能保证这套的NameNode不会和另一套的DataNode通信呢?需要有一个标志,就是clusterID集群ID,其实格式化的时候是先创建了一个集群id,clusterID,DataNode启动的时候,空的DataNode会寻找NameNode将clusterID获取回去,只要一开始通信,就会先验证clusterID。

只能格式化一次:格式化完DataNode将clusterID拿走了,如果下次再格式化clusterID就会发生变化,DataNode将无法和NameNode通信。即DataNode的VERSION中的clusterID与NameNode的VERISON中的clusterID不同。

格式化完,启动文件系统

Start-dfs.sh 

[root@node01 dfs]# jps
2049 DataNode
1968 NameNode
2325 Jps
2183 SecondaryNameNode

[root@node01 dfs]# ll
总用量 12
drwx------. 3 root root 4096 9月  28 02:00 data
drwxr-xr-x. 3 root root 4096 9月  28 02:00 name
drwxr-xr-x. 2 root root 4096 9月  28 02:01 namesecondary

启动成功可以通过50070端口访问

NameNode会维护一个虚拟的根目录树,与我们操作系统的目录上没有任何关系。

hdfs dfs -mkdir -p

Hdfs文件系统用户的家目录的父母目录是user,hdfs只是文件系统,没有用户管理模块,由什么用户创建的文件就属于这个用户的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值