美文网首页
hadoop 入门

hadoop 入门

作者: ZHQIAN | 来源:发表于2017-10-06 15:50 被阅读0次

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中。

相关文章

网友评论

      本文标题:hadoop 入门

      本文链接:https://www.haomeiwen.com/subject/xpuhyxtx.html