HDFS的安装、初始化

HDFS集群中机器的角色:

两类核心角色:
主节点(1台):NAME NODE
从节点(N台):DATA NODE

HDFS安装:

一、准备N台机器:

比如4台 1台namenode 3台datanode

准备内容:(主机名,ip,域名映射,防火墙,jdk)

主机名vi /etc/sysconfig/network
ip地址vi /etc/sysconfig/network-scripts/ifcfg-eth0
vi /etc/udev/rules.d/70-persistent-net.rules
域名映射vi /etc/hosts
防火墙chkconfig iptables off
jdk安装:所有的机器jdk都安装到统一目录,安装向导:https://blog.csdn.net/lsl871702235/article/details/51706407或者https://blog.csdn.net/qq_30019911/article/details/72572249
注意:安装的jdk一定要和自己的操作系统类型一致。
否则会出现以下错误:
bash: ./java: cannot execute binary file
出现这个错误的原因可能是在32位的操作系统上安装了64位的jdk,
查看jdk版本和Linux版本位数是否一致。

二、上传hadoop的安装包到虚拟机中

上传到一台机器就行
解压:tar -zxvf hadoop-2.7.7.tar.gz -C /usr/hadoop
查看版本号:cd /usr/hadoop/hadoop-2.7.7/lib/native file libhadoop.so.1.0.0

三、修改配置文件

在/usr/hadoop/hadoop-2.7.7/etc/hadoop目录下
修改:hadoop-env.sh

export JAVA_HOME=/usr/java/jdk1.8.0_181/

修改:core-site.xml

<configuraton>
<property>
<name>fs.defaultFSname>
<value>hdfs://hadoop01:9000value>
property>
<property>
<name>hadoop.tmp.dirname>
<value>/root/hadptmp/value>
property>
configuraton>
四、将hadoop的整个文件都拷贝到其他节点上。
scp -r /usr/hadoop/ hadoop02:/usr/
scp -r /usr/hadoop/ hadoop03:/usr/
...

HDFS的初始化

五:初始化namenode

namenode在机器上运行时,会记录一些数据,数据的记录会有一个特定的目录结构,那么应该在namenode启动之前先构造出这样一个目录:
配置hadoop的环境变量

vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_181/
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.7
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

保存退出,在任意地方,输入hadoop会自动补全。说明配置正确。
初始化namenode:hadoop namenode -format
出现:common.Storage: Storage directory /root/hadptmp/dfs/name has been successfully formatted.说明初始化成功
执行cd /root/hadptmp/ 会出现dfs

六、启动hdfs集群

启动namenode节点,在主节点上 :hadoop-daemon.sh start namenode
命令行输入:jsp
出现 NameNode则表示成功。

如果有错,检查/usr/hadoop/hadoop-2.7.7/etc/hadoop下的core-site.xml中的fs.defaultFS最后的FS是否大写
启动datanode节点,在从节点上:hadoop-daemon.sh start datanode
命令行输入:jsp
出现 DataNode则表示成功。

七、自动化脚本启动

批量启动
在主节点的/usr/hadoop/hadoop-2.7.7/etc/hadoop中更改配置文件:slaves
将datanode添加进去。
配置免密登录:生成密钥 ssh-keygen -t rsa
将密钥拷贝给其他主机:ssh-copy-id 其他主机
如果开启namenode时要输入密码,则是因为本地主机没有配置免密。
本地主机免密登录:生成密钥 ssh-keygen -t rsa -P “”
将本地的公钥导入私钥:cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
用start-dfs.sh启动。
批量停止:
stop-dfs.sh

八、在主节点上配置SecondaryNameNode:

在主节点的/usr/hadoop/hadoop-2.7.7/etc/hadoop中更改配置文件hdfs-site.xml

<configuration>
<property>
<name>dfs.namenode.secondary.http-addressname>
<value>hadoop01:50090value>
property>
configuration>
将配置文

件拷贝到其他节点上

scp hdfs-site.xml hadoop02:$PWD
scp hdfs-site.xml hadoop03:$PWD
.....
九、查看日志

在/usr/hadoop/hadoop-2.7.7目录下有个logs文件夹,可通过里面的日志文件(.log),寻找错误。

十、常见的启动错误

错误:启动完后namenode的主机上有了datanode,或者其他datanode主机上没有出现datanode,或出现多台datanode
用hadoop namenode -format格式化,start-dfs.sh启动完后,其他的节点不能进入。
原因是:当第一次连接的时候,在datanode主机上存放临时文件的目录下(我的为hdptmp),hdptmp/dfs/data/current/version中保存了两个id号
当namenode主机格式化后会生成新的id,再次连接的时候,新的id与原来的id不匹配,所以就连接不上。
解决办法:删除datanode的临时文件目录(hdptmp),直接再次开启start-dfs.sh。即使namenode启动过一次,也不影响。

你可能感兴趣的:(hadoop)