HDFS存放副本时会优先在同一个数据节点备份一份,然后在不同的虚拟机架上备份
namenode的HA是靠主备方式保证的,自动切换时要用到zookeeper,手动切换可以通过命令,备节点可以在数据节点上,一套HDFS-HA最少需要3台机子
安装步骤:
#yum install java
#wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.6.0/hadoop-2.6.0.tar.gz
#tar -zxvf hadoop-2
#mv hadoop-2.6.0 /usr/local/hadoop
ssh免密码登录,分发公钥:
#ssh-keygen -t rsa
#ssh-copy-id -i /root/.ssh/id_rsa.pub '-p 22 root@192.168.128.129'
#vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.79.x86_64/jre 指定jdk目录 export HADOOP_PID_DIR=${HADOOP_HOME}/pids export HADOOP_SSH_OPTS="-p 1234" 如果非22的ssh端口,需要这行来指定端口
#vim /usr/local/hadoop/etc/hadoop/core-site.xml 编辑主节点主要参数
<configuration> <property> <name>hadoop.tmp.dir</name> <value>file:/hdfs/tmp</value>指定上传到hdfs数据临时存放目录,多硬盘可设多个来备份和提高效率 </property> <property> <name>fs.default.name</name> <value>hdfs://192.168.128.129:9000</value> 指定默认主的访问方式 </property> </configuration>
#mkdir -p /hdfs/tmp
#vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml 编辑hdfs数据存放参数
<configuration> <property> <name>dfs.replication</name> <value>2</value> 数据备份数 </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/hdfs/name</value> name节点存放数据位置,多硬盘可设置多个来备份和提高效率 </property> <property> <name>dfs.datannode.data.dir</name> <value>file:/hdfs/nodedata</value> 数据节点存数据位置,多硬盘可设多个来备份和提高效率 </property> <property> <name>dfs.namenode.secondary.http-address</name> 指定备name节点ip <value>hdfs://备节点ip:50070</value> </property> <name>dfs.webhdfs.enabled</name> 开启网页看结构功能 <value>true</value> </property> <property> <name>dfs.permissions</name> 文件操作时禁止检查权限 <value>false</value> </property> </configuration>
#mkdir /hdfs/name
#mkdir /hdfs/nodedata
#vim /usr/local/hadoop/etc/hadoop/slaves 添加数据节点的ip或主机名
#export HADOOP_ROOT_LOGGER=DEBUG,console 为了解决本地库报错,设置前端显示日志
#/usr/local/hadoop/bin/hadoop fs -ls 主要看看需要的GLIBC版本
#wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz
#tar -zxvf glibc-2.14
#mkdir glibc-build
#cd glibc-build
#../glibc-2.14/configur --prefix=/usr
#make && make install 最后出现的libc5啥的错误无视他
#shutdown -r 0 重启系统生效
开始使用:
#/usr/local/hadoop/bin/hadoop namenode -format 格式化
#/usr/local/hadoop/sbin/start-dfs.sh 在namenode节点启动HDFS stop-dfs.sh 停止
访问 http://ip:50070 看网页状态
监控:
获取HDFS状态命令:
#/usr/local/hadoop/bin/hadoop dfsadmin -report
如果livenode是0的话就删了所有节点的tmp、name、data文件夹里的东西,然后再格式化,启动