hadoop的逻辑结构
准备工作
1,安装xshell,xftp
2,虚拟机若干(可以先配置好一台,其他的复制)
pc | 主机名 | IP |
---|---|---|
1 | master | 192.168.56.100 |
2 | slave1 | 192.168.56.101 |
3 | slave2 | 192.168.56.102 |
4 | slave3 | 192.168.56.103 |
配置好master,打开xshell连接到master,将hadoop-2.7.3.tar和jdk-8u91-linux-x64上传到maser的/usr/local中。
# cd /usr/local && ls //查看上传的两个文件是否在该文件夹中
# rpm -ivh jdk-8u91-linux-x64.rpm //安装jdk-8u91-linux-x64.rpm
# tar -xvf hadoop-2.7.3.tar.gz //解压 Hadoop
# mv hadoop-2.7.3 hadoop
# cd hadoop/etc/hadoop
# vi hadoop-env.sh //路径/usr/local/hadoop/etc/hadoop
//将export JAVA_HOME=${JAVA_HOME}
换成export JAVA_HOME=/usr/java/default
# vi /etc/profile
//在最后一行插入
export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin
# source /etc/profile
# shutdown -h now
关闭master,将其另外复制三台(slave1,slave2,slave3)分别修改他们的主机名与IP,使得他们在同一网段,相互之间能ping通。
用xshell连接所有虚拟机
xshell-->工具-->发送键输入到所有回话(即当多台虚拟机都输入相同的命令是,只需在一台虚拟机上输入一次)
# cd /usr/local/hadoop/etc/hadoop
# vi core-site.xml
//在倒数第二行插入脚本
<property>
<name>fs.defaultFS</name>;
<value>hdfs://master:9000</value>;
</property>
# vi /etc/hosts
//插入文本
192.168.56.100 master
192.168.56.101 slave1
192.168.56.102 slave2
192.168.56.103 slave3
仅在master中启动namenode
# hdfs namenode -format //格式化namenode
# hadoop-daemon.sh start namenode //启动namenode
# jps
2540 NameNode //启动成功
在其他的slave中启动DataNodels
# hadoop-daemon.sh start datanode //启动datanode
# jps
2286 DataNode //启动成功
master:
# netstat -ntlp //查看网络相关信息
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 192.168.56.100:9000 0.0.0.0:* LISTEN 1984/java
tcp 0 0 0.0.0.0:50070 0.0.0.0:* LISTEN 1984/java
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 808/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1922/master
tcp6 0 0 :::22 :::* LISTEN 808/sshd
tips:在宿主机的浏览器上浏览192.168.56.100:50070显示可以看到hadoop的外部界面。
关闭集群(master上关闭namenode,slave上关闭datanode)
在master上输入:
# hadoop-daemon.sh stop namenode
# jps
2115 Jps //现在的Java进程中已经没有namenode表示关闭成功
同理在其他的slave上输入:
# hadoop-daemon.sh stop datanode
# jps
10199 Jps
如果我们有上千台slave,通过上面的管理固然是不方便的,所以我们需要对集群进行集中管理。
在master中修改slaves在里面添加上你所有的slave (slaves的路径:/usr/local/hadoop/etc/hadoop)
# cd /usr/local/hadoop/etc/hadoop
# vi slaves
插入:
slave1
slave2
slave3
tips:在master中输入命令,这个命令读取slaves里的列表,然后它会把这个命令发送到列表里的所有slave中。
# start-dfs.sh //启动集群。
tisp:输入密码(master和所有的slave的密码)。
用jps命令检查master的namenode和所有slave的datanode是否启动。
使用ssh免密登录:
# cd
# cd .ssh && ls
known_hosts //里面只有一个文件。
# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
30:a3:44:17:d3:aa:63:51:65:f3:97:34:ee:5d:49:4c root@master
The key's randomart image is:
+--[ RSA 2048]----+
| . +++ o oE |
| . ..o.o o o...|
| ..+. . + ..|
| ....+ o . . |
| .o S . . |
| + |
| . . |
| |
| |
+-----------------+
#ls
id_rsa id_rsa.pub known_hosts //里面多了id_rsa id_rsa.pub。
tips: id_rsa是当前root用户的私钥,id_rsa.pub是公钥。
将公钥拷贝到所有的slave中
# ssh-copy-id slave1
passwd: //输入slave1的密码。
# ssh-copy-id slave2
passswd:
# ssh-copy-id slave3
passwd:
# ssh-copy-id master //本机也得拷贝一份。
passwd:
tips:这时所有的slave和master的~/.ssh中都多了一个authorized_keys文件。
# stop-dfs.sh //关闭集群。
Stopping namenodes on [master]
master: stopping namenode
slave3: stopping datanode
slave1: stopping datanode
slave2: stopping datanode
Stopping secondary namenodes [0.0.0.0]
0.0.0.0: stopping secondarynamenode //namenode和datanode已经全部停了,可以用jps查看。
# start-dfs.sh //重新启动集群,这时将不再需要输入密码。
# hadoop fs -ls / //查看HTFS根目录的当前结构。这个时候该路径下是空的。
找一个相对大一点的文件上传到上面的这个根目录下进行验证。(这里用/usr/local下的hadoop-2.7.3.tar.gz验证)
tisp:在浏览器中浏览192.168.56.100:50070-->Utilities-->Browse the file system-->hadoop-2.7.3.tar.gz可以看到验证结果。
# cd /usr/local
# hadoop fs -put ./hadoop-2.7.3.tar.gz /
# hadoop fs -ls / //这时这个HTFS根目录下就多了一个文件(hadoop-2.7.3.tar.gz)。
# cd /usr/local/hadoop/etc/hadoop
# vi hdfs-site.xml
最后第二行插入:
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
tisp:将一个文件的2块,分别备份2份。
重启集群:
# stop-dfs.sh
# start-dfs.sh
# cd /usr/local
# hadoop fs -put jdk-8u91-linux-x64.rpm / //上传文件,验证。
如果有一台slave坏了,它会自动把该台slave中的文件备份到其他的slave中:
# cd /usr/local/hadoop/etc/hadoop
# vi hdfs-site.xml
在倒数第二行插入:
<property>
<name>dfs.namenode.heartbeat.recheck-interval</name>
<value>10000</value>
</property>
# stop-dfs.sh
# start-dfs.sh
在slave3中使用hadoop-daemon.sh stop datanode把datanode关掉。
在浏览器中浏览192.168.56.100:50070-->Datanode确定slave3已经被down掉,在Utilities-->Browse the file system-->jdk-8u91-linux-64.rpm中确定该文件的2块备份都备份在slave1和slave2中。
网友评论