先介绍一下背景:
我自己的两台虚拟机,一台部署了es,另一台安装hadoop HDFS作为索引备份的存储。
这里es版本是6.2.3,而Hadoop HDFS版本是2.7.1
这是第一篇:为虚拟机安装Hadoop HDFS
hadoop hdfs,提供的是分布式的文件存储,数据存储
这里我们在192.168.211.104的docker02上安装hadoop HDFS,由于只有一台机器,采用Hadoop伪分布式模式
安装过程(前提已经配置好jdk):
1、使用hadoop-2.7.1.tar.gz,使用XFTP上传到CentOS的/usr/local目录下。
2、将hadoop包进行解压缩:tar -zxvf hadoop-2.7.1.tar.gz
3、对hadoop目录进行重命名:mv hadoop-2.7.1 hadoop
4、配置hadoop相关环境变量,这样就不需要每次都切换到Hadoop的安装目录执行hadoop的相关命令了
vi ~/.bashrc
export JAVA_HOME=/usr/local/jdk1.8.0_171
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source .bashrc
以上过程也可以
vi /etc/profile
编辑相同内容之后
source /etc/profile
5. 设置ssh免密登录
Hadoop通过SSH实现对各节点的管理,centos已经默认安装了ssh
可以用以下语句rpm –qa|grep ssh
接下来通过以下语句设置SSH免密码通信
测试ssh登录,再次登录就无须密码验证了
具体过程可参考:设置 SSH 通过密钥登录
6、在/usr/local目录下创建data目录
mkdir data
etc/hosts文件中加入
192.168.211.104 docker02
7、修改配置文件
cd /usr/local/hadoop/etc/Hadoop
1) 编辑hadoop-env.sh,找到HADOOP_OPTS修改为
export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true -Djava.security.krb5.realm= -Djava.security.krb5.kdc="
2) 编辑core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.211.104:9000</value>
</property>
3)编辑hdfs-site.xml
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/data/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/data/datanode</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
其中变量dfs.replication指定了每个HDFS数据库的复制次数。通常为3,由于我们只有一台主机和一个伪分布式的DataNode,因此将此值修改为1
其中dfs.permissions的配置,其作用是禁止权限检查,这样方便我们在es上把snapshot传输到docker02上
4)编辑vi slaves
docker02
注意:不要忘记打开防火墙50070端口
通过上面的配置,Hadoop伪分布式配置就已经完成了,接下来启动hadoop
1)首先格式化namenode
hdfs namenode -format
2)执行完成之后,启动hdfs集群:
start-dfs.sh
验证启动是否成功:jps
看到
DataNode NameNode以及SecondaryNameNode都启动了,说明HDFS启动成功了
3)最后访问HDFS的50070端口,看datanodes部分
由于后面es与docker02的datanode要进行交互,所以不要忘记打开防火墙50010端口
4)停止hdfs集群的方法
stop-dfs.sh
接下来的第二部分索引备份和恢复参考:elasticsearch备份与恢复2_es使用snapshot和restore API
遇到的问题:
1)如果Hadoop中Datanode为空,那么要清空/usr/local/data的内容,再重新format
2)如果防火墙开启了50070端口之后,端口仍无法打开,解决参考: