Hadoop-安装 && hdfs命令

  1. vm中安装Centos7,secureCTR,WinSCP,安装后使用完全克隆方式,产生三台Centos7做分布式安装。克隆出来后的网卡并没有新增,还是原来的ens33,而且ip地址也都不重复,且都能上网,所以没有做其他配置,等后期出现问题在行解决。(在克隆玩几台机子后,远程连接的时候总是会出现这样的问题,在机子上ifconfig后int addr总是会消失,在命令断执行命令 service network restart 就可以了
  2. 几台机子上的名字都是一样的,所以要经过配置文件将其名字修改

Vim /etc/hostname

  1. 修改映射:三台机子上全部这样配置

然后 ping slave1 这样看配置是否成功

  1. 检查防火墙,全部机器都要监察使用secureCRT快捷命令(同时给全部机子发命令)

  View ->command window(打开命令窗口) ->输入

查看防火墙状态命令

关闭防火墙

结果

  1. SSH远程登录

  生成公钥匙(Centos7中已经装好了ssh工具)

建立authorized_keys 文件 ssh本地登录免密码

分别再三台机子上做上述操作,使得三台机子都可以免密码登录

异机登录:

将master生成的公钥匙传递到slave1中去

在slave1中的目录下就能看到id_rsa.pub这个文件

然后将这个文件追加到authorized_keys文件中。

回到master机子中

就实现了异机子登录了。

查看原Centos7中安装的jdk

删除

安装sun的 java

在opt下创建java目录,所有的java相关都放在这里

使用WinSCP将jdk上传

解压jdk

/etc/profile配置java

检测java版本

给其他两台机子上安装java,先删除openJDK的文件,删除方式和上面的一样

然后使用scp –r  命令将master机子上的java整个安装目录(-r参数复制整个安装目录)复制到其他两台机子上,也将master机子上 /etc/profile文件也复制到其他机子上,注意在最后source /etc/profile 使文件生效,最后可以使用java –version 后者 which java命令来查看安装情况。

安装hadoop

WinSCP上传hadoop-2.6.4,hadoop mv 到 /usr下,并解压 tar –zxvf

剩下的事情就是配置文件

 

Core –size.xml配置

Hdfs-size.xml 修改副本数,默认是3

配置secondarynamenode 的位置

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

我搭建的机子是1个NN2个dataN,所以副本数为2.

配置谁是dataNode,谁是NN

Vim slaves 配置dataNode,直接写主机名,就OK了

现在NN,dataNode都已经定义好,但是SNN还没有,定义SNN只需要满足SNN不是和NN在同一台机子上就可以

将SNN放到slave1中,这样slave2就有两个节点一个dataNode可一个SNN

修改master文件就OK,2.6.4中没有master文件,所以我建立了一个,core-site中就已经配置好的NN的。

修改Centos文件/etc/profile配置

Source /etc/profile

格式化namenode   hadoop nemanode  -format

最后显示如下就算成功了,hadoop的工作过程中产生的临时文件,全部会存储到这里

上面配置的SNN在slave1中,但是没有生效,系统默认将其配置到master中去了

启动hadoop后查看jps

Master

Slave1

Slave2

C:\Windows\System32\drivers\etc 修改hosts文件,

查看防火墙:

service iptables status

Hadoop添加到路径中,放置每次都进入hadoop目录才能执行命令

export HADOOP_HOME=/usr/hadoop/hadoop-2.6.5/
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

bin/hdfs namenode -format -force  或者配置好hadoop 的环境变量之后,添加到PATH里面去

执行hadoop name -format

格式化namenode的时候默认配置路径:如果在core-site.xml中不进行配置,那么就会将中间数据都写到这个目录中

hadoop.tmp.dir/tmp/hadoop-${user.name}

格式化的数据是写在这个配置目录下的dfs目录下。

启动namenode:./hadoop-daemon.sh start namenode

启动时候打印的信息:starting namenode, logging to /usr/hadoop/hadoop-2.6.5/logs/hadoop-root-namenode-master.out

也就是日志信息,可以查看日志:less /usr/hadoop/hadoop-2.6.5/logs/hadoop-root-namenode-master.log

查看是否启动:jps

查看端口使用情况:netstat -nltp

在使用的时候,分别使用上面的命令在maste 启动namenode, 在node1,node2 启动datanode

然后使用master 上的namenode 的ip:50070,就可以查看配置情况了:http://172.16.214.128:50070

手动一台一台启动自然会有很多的麻烦:

/usr/hadoop/hadoop-2.6.5/sbinstart-dfs.sh 启动hdfs

在启动的时候命令会去读取 /usr/hadoop/hadoop-2.6.5/etc/hadoop/slaves 中的你写入的datanode节点

 然后就会将这些节点的datanode 全部启动,以及namenode

在启动dataNode 的那些节点上 上面提到的 hdfs.temp.dir 配置目录下会有data 目录,存放数据,和namenode 节点中的这个目录下游name 目录是一样的,当第一次启动的的时候,datanode 会根据core.site.xml 中的namenode 配置在datanaode 中新建data这个目录并生成一些文件,

这个uuid及里面的这些ID都是在namenode 第一次formated 后并启动datanode namenode给分配的,下一次在来启东datanode 的时候会去读取这些Id,然后和namenode连接,连接的时候namenode会去检验这些Id,看是否和namde这里保存的datanode 的ID 匹配情况,匹配那么久能连接启动,否则datanode不能启动,

而出现这种情况的原因是,namde再次的formated,每次格式化就会生产不同的这些ID

解决方法是:将dataNode 中的这些保存ID 的目录(/tmp/hadoop-root/data目录)删除,然后再启动

而namenode 的name 目录是没必要删除的,删除之后还需要执行formated,

HDFS 工作机制

hdfs分布式存取:

存取是的路径都是客户端在请求的时候告诉namenode,由namenode指派的。

用户存入文件的时候,会被切为多块,分别存在不同的datanode上,namenode负责管理数据,datanode负责储存文件快

hdfs基本操作:

bin/hdfs dfs -mkdir /test
bin/hdfs dfs -mkdir -p /test1/subTest1
 bin/hdfs dfs -ls /

bin/hdfs dfs -put LICENSE.txt /test  这里文件名路径不需要写file:/// 因为put 命令本生就是说讲本地文件上传到hdfs
     
bin/hdfs dfs -get /test1/subTest1 /opt/datas 在namenode 获取数据到客户端

bin/hdfs dfs -copyFromLocal NOTICE.txt /test1/subTest1
bin/hdfs dfs -moveFromLocal ..
bin/hdfs dfs -du /test1/subTest1  查看目录或者文件大小

bin/hdfs dfs -count /test1
bin/hdfs dfs -cp /test1/subTest1 /test
bin/hdfs dfs -rm -r /test
bin/hdfs dfs -ls -R /test 递归查看全部目录,子目录
bin/hdfs dfsadmin -report

bin/hdfs dfsadmin -refreshNodes

以上是在没有配置好环境变量的需要进去hadoop目录的写法,如果配置好环境变量
hadoop fs -put ~/a.txt /

在命令行输入:
hadoop fs 就可以看见所有的命令。

put文件的时候一直都put不进去,网上看了很多的问题,有的datanode没开启,有的多次format出现上面提到的的问题的。

我的都是好的,根据提示信息,是因为dataNode的防火墙开启的,部分日志:

NFO hdfs.DFSClient: Exception in createBlockOutputStream
java.io.IOException: Got error, status message , ack with firstBadLink as 192.168.1.142:50010
        at org.apache.hadoop.hdfs.protocol.datatransfer.DataTransferProtoUtil.checkBlockOpStatus(DataTransferProtoUtil.java:140)
        at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.createBlockOutputStream(DFSOutputStream.java:1359)
        at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.nextBlockOutputStream(DFSOutputStream.java:1262)
        at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:448)
16/10/11 00:11:01 INFO hdfs.DFSClient: Abandoning BP-898235430-192.168.1.139-1476169105223:blk_1073741825_1001
16/10/11 00:11:01 INFO hdfs.DFSClient: Excluding datanode DatanodeInfoWithStorage[192.168.1.142:50010,DS-d51b3c1b-2221-414e-83bc-42ffb3fd2ef9,DISK]

systemctl status firewalld 查看防火墙情况

systemctl stop firewalld 关闭防火墙

namenode执行: hadoop fs -put ~/a.txt /

结果看到datanode深目录下的存储文件

meta 是校验核,防止存储文件被暴力修改

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值