环境准备
部署环境:3台阿里云主机,2core8GB,centos7.2
ruozedata001 172.24.151.60(私)
ruozedata002 172.24.151.55(私)
ruozedata003 172.24.151.58(私)
配置免密登录
useradd hadoop
su - hadoop
mkdir app data lib maven_repos software script source tmp
root: yum install –y lrzsz
rz (上传hadoop、zk、jdk安装包)
hostname -i (查看ip,私) /etc/hosts必须配置的是内网IP
root:vi ./etc/hosts
172.24.151.60 ruozedata001
172.24.151.55 ruozedata002
172.24.151.58 ruozedata003
su - hadoop
ssh-keygen
cd .ssh
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
将ruozedata002和ruozedata003的id_rsa.pub下载本地,再上传到ruozedata001~/.ssh/目录下
cat id_rsa2.pub >> authorized_keys
cat id_rsa3.pub >> authorized_keys
然后将authorized_keys下载本地,上传到另两台对应目录下。
chmod 600 authorized_keys
测试:ssh ruozedata002 date
注意:第一次ssh需要输入yes,下次就不会了,这是因为产生了~/.ssh/known_hosts文件,所以若是主机重新运行ssh-keygen,必须删除known_hosts中旧的信息。
cd software
scp * ruozedata002:/home/hadoop/software
scp * ruozedata003:/home/hadoop/software
安装JDK
root: mkdir /usr/java
cd software/
tar -zxvf jdk-8u45-linux-x64.gz -C /usr/java
vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_45
export PATH=\$JAVA_HOME/bin:$PATH
source /etc/profile
chown -R root:root /usr/java/*
安装zookeeper
su - hadoop
cd ~/software
tar -zxvf zookeeper-3.4.6.tar.gz -C ~/app
tar -zxvf hadoop-2.6.0-cdh5.15.1.tar.gz -C ~/app
cd ~/app
ln -s hadoop-2.6.0-cdh5.15.1 hadoop
ln -s zookeeper-3.4.6 zookeeper
cd ~/app/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
dataDir=/home/hadoop/data/zookeeper
server.1=ruozedata001:2888:3888
server.2=ruozedata002:2888:3888
server.3=ruozedata003:2888:3888
cd ~/data
mkdir zookeeper
echo 1 > /home/hadoop/data/zookeeper/myid
vi ~/.bash_profile
export ZOOKEEPER_HOME=/home/hadoop/app/zookeeper
export PATH=\$ZOOKEEPER_HOME/bin:$PATH
source ~/.bash_profile
验证:which zkServer.sh
zkServer.sh start
zkServer.sh status
安装hadoop
cd /home/hadoop/app/hadoop/etc/hadoop
vi hadoop-env.sh
修改:export JAVA_HOME=/usr/java/jdk1.8.0_45
rm -f core-site.xml hdfs-site.xml slaves yarn-site.xml
下载后上传:
http://git.ruozedata.com/G7/G7/blob/master/02-Hadoop%E9%AB%98%E7%BA%A7%E7%AC%AC%E4%BA%8C%E8%AF%BE(HDFS&Yarn%20HA%E9%83%A8%E7%BD%B2)/Hadoop%E9%9B%86%E7%BE%A4%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.rar
root: yum install -y dos2unix
dos2unix slaves
vi ~/.bash_profile
export HADOOP_HOME=/home/hadoop/app/hadoop
export PATH=$ZOOKEEPER_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
source ~/.bash_profile
which hdfs
注意:先启动每台的JN,在格式化NN
3台一起:hadoop-daemon.sh start journalnode
rouzedata001:hadoop namenode -format
cd /home/hadoop/data/dfs
scp -r name rouzedata002:/home/hadoop/data/dfs
rouzedata001: hdfs zkfc -formatZK
start-dfs.sh
云主机访问50070和8088端口,需要设置安全组,位了防止挖矿,授权对象为本地的公网IP。
浏览器输入:
47.108.90.228:50070
47.108.91.23:50070
start-yarn.sh
rouzedata002: yarn-daemon.sh start resourcemanager (单独启动)
浏览器输入:
47.108.90.228:8088 (active)
47.108.91.23:8088/cluster/cluster
手动启动historyserver
rouzedata001: $HADOOP_HOME/sbin/mr-jobhistory-daemon.sh start historyserver
浏览器输入:
47.108.90.228:19888
启动HDFS和YARN
启动顺序:
1. zkServer.sh start (每台)
2. start-all.sh
2.1 namenode
2.2 datanode
2.3 journalnode
2.4 zkfc
2.5 resourcemanager
2.6 nodemanager
3. 单独启动 standby 的 reourcemanager
4. historyserver
停止所有角色:stop-all.sh
停止顺序:和启动顺序相反。
常用命令
监控集群:hdfs dfsadmin -report
hdfs haadmin -getServiceState nn1 获取HA状态,返回“active”或“standby”
hdfs haadmin -getServiceState nn2
为了测试主备切换,kill -9 杀掉namenode进程,然后手工启动:
hadoop-daemon.sh start namenode
hdfs haadmin -failover nn1 nn2 将active由nn1转换到nn2.
hdfs haadmin -transitionToStandby -forcemanual nn2 将nn2转换为standby
hdfs文件检查
hdfs fsck / (好文件显示块对应的IP,坏文件不显示)
这个命令可以检查整个文件系统的健康状况,但是要注意它不会主动恢复备份缺失的block,这个是由NameNode单独的线程异步处理的。
hdfs fsck / -files -locations -blocks -racks
-files 文件分块信息
-blocks 在带-files参数后才显示block信息
-locations 在带-blocks参数后才显示block块所在datanode的具体IP位置,
-racks 在带-files参数后显示机架位置
hdfs自动修复时间间隔是6小时。
hdfs debug 手动修复hdfs文件的缺失块
示例: hdfs debug recoverLease -path /file.txt -retries 3