Hadoop入坑之路(一)

入坑准备

  在开始学习Hadoop之前需要提前准备几个服务器。我在虚拟机上提前准备了4个Centos_7 64位的操作系统。并需要完成一下配置:

网络配置:

  1.修改主机名

  2.设置映射关系

[root@master ~]# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

222.18.157.50 hdp-master
222.18.157.51 hdp-slaver1
222.18.157.52 hdp-slaver2
222.18.157.53 hdp-slaver3

  3.修改IP地址

[root@master ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
DEVICE=ens33
ONBOOT=yes

# ipaddr gateway netmask dns

IPADDR=222.18.157.50
GATEWAY=222.18.157.2
NETMASK=255.255.255.0
DNS1=114.114.114.114
DNS2=8.8.8.8

  

免密登陆设置:

  在整个学习过程中,将hdp-master(222.18.157.50)设置为主机。hdp-slaver1(222.18.157.51)、hdp-slaver2(222.18.157.52)、hdp-slaver3(222.18.157.53)设置为从机。

  在整个过程中,为了方便主机对从机的管理,需要进行免密登陆配置。

[root@hdp-master ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
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:
SHA256:kJEWZWy/U0INFpu5C58hcpPeeKLyeearUfUUK7JffQ0 root@hdp-master
The key's randomart image is:
+---[RSA 2048]----+
|      o=o ++.    |
|      o+o..+.o   |
|     .o..o* o E  |
|       . =o=.. ..|
|      . S o+o . o|
|       = Oo=   . |
|      . + B.     |
|    .  +oo       |
|     o==o.       |
+----[SHA256]-----+

  可以发现目录中多了一个.ssh隐藏文件,进入可以查看已经生成了相应的公钥和私钥文件。

[root@hdp-master ~]# cd .ssh/
[root@hdp-master .ssh]# ll
总用量 8
-rw-------. 1 root root 1679 9月  10 21:26 id_rsa
-rw-r--r--. 1 root root  397 9月  10 21:26 id_rsa.pub

  将公钥文件拷贝到从机上即可。

[root@hdp-master .ssh]# ssh-copy-id root@hdp-slaver1
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@hdp-slaver1's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@hdp-slaver1'"
and check to make sure that only the key(s) you wanted were added.

  这样hdp-master的公钥就成功的拷贝到了从机hdp-slaver1上。注意,免密登陆是单向的。

 

JDK安装:

  由于Hadoop是用Java开发的,所以在正式安装Hadoop之前还需要安装JDK,点击这里下载JDK从官网上下载JDK的Linux版本的.tar.gz压缩包并解压。

  将JDK添加到环境变量中,打开/etc/profile文件,并在最后添加以下代码:

export JAVA_HOME=/root/learn_hadoop/jdk
export PATH=.:$PATH:$JAVA_HOME/bin

  再执行source /etc/profile命令,使修改后的配置文件生效。可以执行以下命令查看Java的版本:

[root@hdp-master learn_hadoop]# java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

 

 

Hadoop安装

  经过了上述繁琐的准备之后,现在开始正式安装hadoop了。同样需要从Hadoop官方网站上下载安装包。在这里我下载的Hadoop版本是3.1.1,将下载后的安装包解压。

环境变量配置:

  打开/etc/profile文件并添加下列代码并执行source /etc/profile代码:

export HADOOP_HOME=/root/learn_hadoop/hdp
export PATH=.:$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

修改core-site.xml

  在/root/learn_hadoop/hdp/etc/hadoop路径下修改core-site.xml配置文件:

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://222.18.157.50:9000</value>
</property>
</configuration>

修改hdfs-site.xml

  在/root/learn_hadoop/hdp/etc/hadoop路径下修改hdfs-site.xml配置文件:

<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/root/dfs/name</value>
</property>

<property>
<name>dfs.datanode.data.dir</name>
<value>/root/dfs/data</value>
</property>
</configuration> 

  在Hadoop安装过程中的一些基本配置已经完成,为了避免在从机中进行相同的操作,只需要将主机中的包拷贝到从机中即可。

 

 

HDFS客户端的操作

  HDFS客户端有多种形式:

    1.网页模式

    2.命令行模式

  客户端在那里运行并没有约束,只要运行客户端的机器能够和HDFS集群连网就行。

 

  文件的切块大小和存储的副本数量,都是由客户端决定!

  所谓的由客户端决定,是通过配置参数来定的。HDFS的客户端会读以下两个参数,来决定切块大小、副本数量:

    切块大小的参数: dfs.blocksize

    副本数量的参数: dfs.replication

 

启动HDFS

  在第一次启动HDFS前需要初始化namenode的元数据目录。(这一步非常重要!!!

hadoop namenode -format

  然后在hdp-master主机上启用namenode的进程

hdfs --daemon start namenode

  在windows中用浏览器访问namenode提供的web端口:9870即可。

hdfs://222.18.157.50:9870

  最后就可以启动集群中的datanode

hdfs --daemon start datanode

 

  自动启动Hadoop集群

  1.  配置在目录 $HADOOP_HOME/etc/hadoop/ 下的 workers文件。将需要统一启动的集群主机名写入文件。

  2.  配置在目录 $HADOOP_HOME/sbin/ 下的文件 start-dfs.sh 和 stop-dfs.sh:

  分别在文件前面写入下列语句:

 

HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

 

  3.  配置在目录 $HADOOP_HOME/sbin/ 下的文件 start-yarn.sh 和 stop-yarn.sh:

  分别在文件前边写入下列语句:

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

  配置完成后就可以在Linux终端执行 start ,stop 语句,实现自动启动集群功能。

 

 

 

HDFS客户端命令行操作命令

  查看hdfs中的目录信息  

    hadoop fs -ls /hdfs路径 

  上传文件到hdfs中

    hadoop fs -put /本地文件  /aaa

    hadoop fs -copyFromLocal /本地文件  /hdfs路径   ##  copyFromLocal等价于 put 

    hadoop fs -moveFromLocal /本地文件  /hdfs路径  ## 跟copyFromLocal的区别是:从本地移动到hdfs中 

  下载文件到客户端本地磁盘

    hadoop fs -get /hdfs中的路径   /本地磁盘目录

    hadoop fs -copyToLocal /hdfs中的路径 /本地磁盘路径   ## 跟get等价

    hadoop fs -moveToLocal /hdfs路径  /本地路径  ## 从hdfs中移动到本地  

  在hdfs中创建文件夹

        hadoop fs -mkdir  -p /aaa/xxx        

  移动hdfs中的文件(更名)

    hadoop fs -mv /hdfs的路径  /hdfs的另一个路径

  删除hdfs中的文件或文件夹

    hadoop fs -rm -r /aaa 

  修改文件的权限

    hadoop fs -chown user:group /aaa

    hadoop fs -chmod 700 /aaa 

  追加内容到已存在的文件

    hadoop fs -appendToFile /本地文件   /hdfs中的文件 

  显示文本文件的内容

    hadoop fs -cat /hdfs中的文件

    hadoop fs -tail /hdfs中的文件

 

posted @ 2018-09-10 23:16  _再遇见  阅读(2710)  评论(0编辑  收藏  举报