安装Hadoop的预备内容
安装Hadoop之前,我们首先要安装以下两个软件
- VMware Workstation
- CentOS6.5
虚拟机安装完成后,我们要在虚拟机中安装以下两个必要程序
1.JDK1.7或更高版本
2.SSH(安全外壳协议),主要用于主机间的免密码登录。Hadoop需要通过SSH来启动Slave列表(Hadoop组件集群中分为Master和Slave两个角色,Master是管理者,Slave是被管理者,是存储数据的主机列表,通常由Master启动Slave。)中各台主机的守护进程,这里推荐OpenSSH。一般默认CentOS已经安装了OpenSSH,所以只需进行SSH配置即可。
第一步、配置静态ip
在Linux系统命令终端,执行命令
cd /etc/sysconfig/network-scripts
切换到该目录并查看该目录下的文件ifcfg-eth0,如图所示。
在Linx系统命令终端,执行命令
vim ifcfg-eth0
,并修改文件的内容。
按“键入编辑内容编译完成后按Esc键退出编译状态,之后执行命令wq,保存并退出。 IPADDR、 NETMASK、 GATEWAY、DNS1的值可以根据自己的本机进行修改,如下所示。
DEVICE="eth0" #设备名字
BOOTPROTO="static" #静态ip
HWADDR="00:0C:29:ED:83:F7" #mac地址
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes" #开启自启动
TYPE="Ethernet" #网络类型
UUID="28354862-67a7-4a5b-9f9a-54561401f614"
IPADDR=192.168.140.128 #IP地址
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.140.2 #网关
DNS1=192.168.140.2 # dns
如何设置IPADDR、NETWASK、GATEWAY、DNS1,使用下面的方法:
单击VMWare WorkStation编辑菜单下的虚拟网络编辑器菜单,打开虚拟网络编辑器窗体。选择VMnet8,如下图所示。
单击NAT设置按钮显示下图。
点击DHCP设置按钮显示下图。
注意:
-
IPADDR是自定义的地址,但是必须和192.168.140.x匹配,x自定义
-
NETMASK在刚才的图片中显示
-
GATEWAY在刚才的图片中显示,DNS1和GATEWAY相同
配置iP地址完毕之后,在命令终端的任意目录下,执行命令 ifconfig,查看配置效果,如图所示。
注意:执行ifconfig前必须保证网络畅通,如下图所示。
在命令终端的任意目录下重启服务,执行命令[root@hadoop network-scripts]# reboot
ping ip地址看是否安装成功,如图所示。
注意:执行ping前必须保证网络畅通,按ctrl+z退出
修改主机名和域名映射
启动命令终端,在任何目录下执行命令cd /etc/sysconfig,切换到该目录并查看目录下的文件,可以发现存在文件 network,如图所示。
在/etc/sysconfig目录下找到文件 network,然后执行命令 vim network,按“i”进入编辑内容,编译完成后按Esc退出编译状态,之后执行命令wq保存并退出,如下图所示修改了主机名,主机名是我们刚才安装Linux时的主机名(hadoop是我们刚才安装时设置的主机名)。
修改主机名和IP地址具有映射关系,执行命令vim /etc/hosts,按“i”进入编辑内容,编译完成后按Esc退出编译状态,之后执行命令wq保存并退出,如图所示。
前面是设置的静态IP地址,后面的是主机名。
一旦修改过主机名和域名映射,重启Linux会显示下图。
JDK的安装和配置
前面有讲过
地址:JDK的安装和配置
SSH免密码配置
SSH是 Secure Shell的缩写,由IETF的网络工作小组制定。SSH是建立在应用层和传输层上的安全协议,专为远程登录会话和其他网络服务提供安全性的协议。
Hadoop集群的节点之间的通信应该设置为不用密码交互,否则节点之间每次通信都需要输入密码,会给集群运行带来很大麻烦。使用SSH公钥登录可以解决这个问题,省略掉节点通信需要输入密码的步骤。
先在本机上实现SSH免密码登录实质上是使用一对加密字符串,一个称为公钥,另一个称为私钥。公钥对任何人都可见,而私钥仅对拥有者可见。
(1)在Linux系统的终端的任何目录下通过切换cd ~/.ssh,进入到.ssh目录下。
[root@hadoop Desktop]# cd ~/.ssh
~表示当前用户的home目录,通过cd ~可以进入到你的home目录。.开头的文件表示隐藏文件,这里.ssh就是隐藏目录文件。
(2)在Linux系统命令框的.ssh目录下,执行ssh-keygen命令。
[root@hadoop .ssh]# ssh-keygen -t rsa
(连续按三次回车)执行完上面命令后,会生成两个id_rsa(私钥)、id_rsa.pub(公钥)两个文件,如图所示。
(3)授权SSH免密码
[root@hadoop .ssh]# ssh-copy-id hadoop
相当于该主机给自己设置免密码登录,hadoop是刚才设置的主机名。根据提示输入yes并输入访问主机所需要的密码。
(4)执行ssh Hadoop命令,发现不需要密码就能使用ssh命令连接Hadoop主机了。
[root@hadoop .ssh]# ssh hadoop
如图所示,注意hadoop是刚才设置的主机名。
注意一旦执行ssh命令后,需要使用exit命令注销ssh连接。
如果没有执行步骤(3),会显示下面的信息,如下图所示。
Hadoop环境的搭建
Hadoop的组件配置,均可以利用XML文件进行配置,有以下的5个配置文件,具体配置作用见表3.1。这些文件都存储在hadoop安装目录下的etc/hadoop子目录中。
配置文件名 | 配置文件功能 |
---|---|
etc/hadoop/hadoop-env.sh | 配置JAVA_HOME |
core-site.xml | 配置通用属性 |
hdfs-site.xml | 配置HDFS的属性 |
mapred-site.xml | 配置MapReduce属性 |
yarn-site.xml | 配置YARN属性 |
-
启动 Linux命令终端
[root@hadoop Desktop]# mkdir/usr/hadoop
[root@hadoop Desktop]# cd /usr/hadoop
切换到该目录下,把Hadoop文件上传到该目录下 -
然后对/usr/hadoop目录下的Hadoop压缩文件hadoop-2.6.5.tar.gz
[root@hadoop hadoop]# tar -zxvf hadoop-2.6.5.tar.gz -C /usr/hadoop
-C是指解压压缩包到指定位置[root@hadoop hadoop]# ls
hadoop-2.6.5 hadoop-2.6.5.tar.gz
解压缩后的目录为hadoop-2.6.5,这个目录是$HADOOP_NAME。 -
切换到$HADOOP_NAME/etc/hadoop 目录下并查看该目录下的包。
[root@hadoop hadoop]# ls
-
在$HADOOP_NAME/etc/hadoop目录下
[root@hadoop hadoop]# vim hadoop-env.sh
按“i”键进入编辑内容,在文件中修改如下内容。
# The java implementation to use.
export JAVA_HOME=${JAVA_HOME}
修改为
export JAVA_HOME=/usr/java/jdk1.8.0_181
修改完成后,按ESC退出编辑状态,之后执行命令wq保存并退出。
5.一共修改4个配置文件
在$HADOOP_NAME/etc/hadoop目录下执行命令vim core-site.xml,并修改配置文件core-site.xml
在$HADOOP_NAME/etc/hadoop目录下执行命令vim hdfs-site.xml,并修改配置文件hdfs-site.xml
在$HADOOP_NAME/etc/hadoop目录下查看是否有配置文件mapred-site.xml。目录下默认情况下没有该文件,可通过执行命令,修改一个文件的命名
在$HADOOP_NAME/etc/hadoop目录下执行命令vim yarn-site.xml,并修改配置文件yarn-site.xml
修改信息为
执行命令vi /etc/profile,把Hadoop的安装目录配置到环境变量中,如图
然后让配置文件生效,执行命令[root@hadoop Desktop]# source /etc/profile
格式化namenode。在任意目录下(配置Hadoop环境变量的情况下)执行命令
[root@hadoop Desktop]# hdfs namenode -format
或者
[root@hadoop Desktop]# hadoop namenode -format
实现格式化。
启动Hadoop进程,首先启动HDFS系统,在$HADOOP_NAME/sbin目录下
[root@hadoop sbin]# ./start-dfs.sh
然后用jps查看进程,如图
启动YARN,在$HADOOP_NAME/sbin目录下,执行命令
[root@hadoop sbin]# ./start-yarn.sh
然后用jps查看进程,如图
注意:执行hadoop代码时,有时会产生下面的异常:
18/12/18 06:56:44 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
需要修改
$HADOOP_HOME/etc/hadoop/log4j.properties文件,添加以下内容。
log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR
测试HDFS和YARN,首先在浏览器地址栏中输入http://192.168.140.128:50070 下面显示HDFS管理界面,如下图所示。
在浏览器的地址栏输入http://192.168.140.128:8088
下面显示MapReduce的管理页面,如下图所示。
注意:上面的IP地址必须是第二章2.4.1设置的本地IP。
关闭HDFS系统,在$HADOOP_NAME/sbin目录下,执行命令
[root@hadoop sbin]# ./stop-dfs.sh
关闭YARN系统,在$HADOOP_NAME/sbin目录下,执行命令
[root@hadoop sbin]# ./stop-yarn.sh