在一个节点上,完成HDFS各个组件的搭建。 如不熟悉HDFS各个组件及功能,可参阅如下博客。
个人博客: xzy 。
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
查看当前网络状态,若想配置ip重启后不自动更改,可以设置 ONBOOT=yes # 把网卡设置成开机启动
。也可以设置静态ip,这里不再累述。sudo service iptables stop # 关闭防火墙服务。 sudo chkconfig iptables off # 禁止防火墙开机自启。
#安装jdk sudo tar -zxvf jdk1.8.0_151_linux-x64_bin.tar -/home/software #sudo 代表使用管理员权限 路径为自己的安装路径 #配置环境变量 vim ~/.bashrc # 在文件最后添加 export JAVA_HOME=/home/software/jdk-1.8 export PATH=$JAVA_HOME/bin:$PATH # 接下来需要使环境变量生效. source ~/.bashrc
若配置正确可以使用 java -version
查看版本
修改hosts映射
# 在文件中添加本机Ip(ifconfig可以查看ip) 和用户名 sudo vi /etc/hosts #例如 192.168.23.196 node01
配置免密登录
若使用mini版Linux 则需先下载ssh工具包
sudo yum install openssh-clients sudo yum install openssh-server
#生成自己的公钥** ssh-****** -t rsa #把自己的公钥给node01(这里也就是自己) ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] #验证 ssh 主机ip 或 主机名(前提有hosts映射)
安装配置Hadoop
tar -zxvf hadoop-2.6.5.tar.gz
mv hadoop-2.6.5 hadoop #更改文件夹名 方便操作
vim ~/.bashrc # 在文件最后添加: export HADOOP_HOME=/home/software/hadoop export HADOOP_INSTALL=$HADOOP_HOME export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin # 使用source命令,是环境变量生效. source ~/.bashrc
若配置成功可使用hadoop version
查看版本信息
修改配置文件
hdfs-site.xml
配置文件<property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>node01:50090</value> </property>
core-site.xml
配置文件<property> <name>fs.defaultFS</name> <value>hdfs://node01:9000</value> </property> <property> <name>hadoop.tmp.dir</name> #临时文件夹 名字可自取 如果启动失败 可以删除abc目录再次启动 <value>/var/abc/hadoop/local</value> </property>
slaves
配置文件localhost
改为node01
格式化NameNode(创建目录以及文件)
hdfs namenode -format
启动HDFS
start-dfs.sh
关闭为 stop-dfs.sh
启动后就可以操作HDFS啦
创建目录 例 hdfs dfs -mkdir -p /home/test
上传文件 例 hdfs dfs -D dfs.blocksize=1048576 -put
将各个角色的进程(角色=进程)在不同的节点启动
例如
node01 | node02 | node03 | node04 |
---|---|---|---|
NameNode | DataNode SecondaryNameNode | DataNode | DataNode |
yum install ntp # 安装ntp
ntpdate ntp1.aliyun.com # 使用阿里云同步时间
date
来查看时间ssh-****** -t rsa -P '' -f ~/.ssh/id_rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
hdfs-site.xml
<property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>node02:50090</value> </property>
core-site.xml
<property> <name>fs.defaultFS</name> <value>hdfs://node01:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/var/abc/hadoop/cluster</value> </property>
修改slaves文件
修改为
node02 node03 node04
将配置好的安装包分发到其他节点上
scp -r hadoop-2.6.5 [email protected]:/home/software/hadoop/ scp -r hadoop-2.6.5 [email protected]:/home/software/hadoop/ scp -r hadoop-2.6.5 [email protected]:/home/software/hadoop/ # 注意一点 发送目录必须与接收目录一致
stop-dfs.sh
hdfs namenode -format
start-dfs.sh
首先从Hadoop的缺陷说起
集群规划
NN | NN | DN | ZK | ZKFC | JN | |
---|---|---|---|---|---|---|
node01 | √ | √ | √ | |||
node02 | √ | √ | √ | √ | √ | |
node03 | √ | √ | √ | |||
node04 | √ | √ |
配置免密
在完全分布式的基础上 新增 node02>node01
配置JDK
修改配置文件
<property> <name>dfs.nameservices</name> <value>mycluster</value> </property> <property> <name>dfs.ha.namenodes.mycluster</name> <value>nn1,nn2</value> </property> <property> <name>dfs.namenode.rpc-address.mycluster.nn1</name> <value>node01:8020</value> </property> <property> <name>dfs.namenode.rpc-address.mycluster.nn2</name> <value>node02:8020</value> </property> <property> <name>dfs.namenode.http-address.mycluster.nn1</name> <value>node01:50070</value> </property> <property> <name>dfs.namenode.http-address.mycluster.nn2</name> <value>node02:50070</value> </property> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://node01:8485;node02:8485;node03:8485/mycluster</value> </property> <property> <name>dfs.journalnode.edits.dir</name> <value>/var/sxt/hadoop/ha/jn</value> </property> <property> <name>dfs.client.failover.proxy.provider.mycluster</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <property> <name>dfs.ha.fencing.methods</name> <value>sshfence</value> </property> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/root/.ssh/id_rsa</value> </property> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property>
<property> <name>fs.defaultFS</name> <value>hdfs://mycluster</value> </property> <property> <name>ha.zookeeper.quorum</name> <value>node02:2181,node03: 2181,node04:2181</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/var/abc/hadoop/local</value> </property>
把配置好的HDFS安装包拷贝到其他节点
搭建zookeeper集群
格式化NameNode
./zkServer.sh start
hadoop-daemon.sh start journalnode
hdfs namenode -format hadoop-daemon.sh start namenode
hdfs namenode -bootstrapStandby
hdfs zkfc -formatZK
stop-dfs.sh
start-dfs.sh