$ useradd hadoop
$ passwd hadoop
$ cat /etc/passwd | grep bin/bash
$ adduser hadoop sudo
$ exit
配置新的hadoop用户 查看是否配置成功 为hadoop用户增加管理员权限 退出重新登陆
虚拟机设置为桥接,有两种方法配置网络: 1. 进入GUI界面网络设置,打开有线连接 2. 进入网络配置文件目录,修改如下内容
$ cd /etc/sysconfig/network-scripts/
$ vi ifcfg-enp0s3
修改为
HWADDR=00:0C:29:8D:24:73
TYPE=Ethernet
BOOTPROTO=static #启用静态IP地址
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=ae0965e7-22b9-45aa-8ec9-3f0a20a85d11
ONBOOT=yes #开启自动启用网络连接
IPADDR0=192.168.21.128 #设置IP地址
PREFIXO0=24 #设置子网掩码
GATEWAY0=192.168.21.2 #设置网关
DNS1=8.8.8.8 #设置主DNS
DNS2=8.8.4.4 #设置备DNS
其中,ip地址(一般和路由在一个区段)、网关(一般是路由的地址)、DNS服务器的设置至关重要。 然后,
$ service network restart #重启网络
$ ping www.baidu.com #测试网络是否正常
Centos7默认使用firewall作为防火墙,这里改为iptables防火墙。 这里配置apache环境的目的是可以在远端机器访问终端的Web界面。
hadoop的安装需要配置Java环境。 检验系统原版本
$ java -version
进一步查看JDK信息:
$ rpm -qa | grep java
卸载OpenJDK,执行以下操作:
$ rpm -e --nodeps tzdata-java-2014i-1.el7.noarch
$ rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.71-2.5.3.1
$ rpm -e --nodeps java-1.7.0-openjdk-1.7.0.71-2.5.3.1.el7_0.x86
安装JDK:
rpm -ivh jdk-8u25-linux-x64.rpm
验证安装:
$ java
$ javac
$ java -version
最后,配置环境变量,以备不时之需:
$ vi + /etc/profile
JAVA_HOME=/usr/java/jdk1.8.0_25
JRE_HOME=/usr/java/jdk1.8.0_25/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
$ source /etc/profile
$ echo $PATH
$ echo $JAVA_HOME
首先,简单介绍下ssh的原理:
a要连接b,a先生成自己的公钥和私钥。然后把公钥派发给b。当a与b建立连接的时候,b会生成一个随机数并且用a的公钥对其进行加密返回a,然后a用私钥对其进行解密再返回b,如果和原来的随机数相等,则连接建立。
安装ssh,rsync
$ yum install openssh-server
$ yum install rsync
$ rpm -qa | grep ssh #验证安装成功
$ rpm -qa | grep rsync #验证安装成功
配置无密码登陆
$ cd ~/.ssh/ # 创建存放密匙的目录
$ ssh-keygen -t rsa # 生成公匙
$ cat id_rsa.pub >> authorized_keys # 加入授权
$ chmod 700 ~/.ssh # 设置相应权限,否则无法登陆
$ chmod 600 ~/.ssh/authorized_keys
$ ssh localhost #验证
通过WinScp程序,将下载好的hadoop文件放于/usr/local目录下,该目录一般用于存放用户的应用程序。 进入/usr/local目录。
$ tar -zxf hadoop-2.7.1.tar.gz
$ mv ./hadoop-2.7.1/ ./hadoop
$ cd hadoop
$ ./bin/hadoop
目前,hadoop安装完成。
$ vim etc/hadoop/hadoop-env.sh
# set to the root of your Java installation
export JAVA_HOME=/usr/java/jdk1.8.0_51
单机模式,hadoop作为一个java进程,通常用于debug。
$ mkdir input
$ cp etc/hadoop/*.xml input
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar grep input output 'dfs[a-z.]+'
$ cat output/*
1 dfsadmin
$ vim etc/hadoop/core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
$ vim etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
$ vim etc/hadoop/yarn-env.sh
# some Java parameters
export JAVA_HOME=/opt/jdk1.8.0_51
$ vim etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
$ vim etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
首先,进行到伪分布配置,开启NameNode,DataNode,SeconaryNameNode
$ sbin/start-dfs.sh
接着,开启NodeManager,ResourceManager
$ sbin/start-yarn.sh
$ jps
22753 NameNode
22914 DataNode
24436 NodeManager
24312 ResourceManager
24600 Jps
23178 SecondaryNameNode
可以通过web浏览ResourceManager
ResourceManager - http://localhost:8088/
运行mapreduce的程序 结束yarn
$ sbin/stop-yarn.sh
在这里额外讲一下 PATH 这个环境变量(可执行
echo $PATH
查看,当中包含了多个目录)。例如我们在执行ls
这个命令时,实际执行的是/bin/ls
这个程序,而不是~/ls
这个程序(假如存在)。系统是根据 PATH 这个环境变量中包含的目录位置,逐一进行查找,直至在这些目录位置下找到匹配的程序(若没有匹配的则提示该命令不存在)。 上面的教程中,我们都是先进入到/usr/local/hadoop
目录中,再执行sbin/hadoop
,实际上等同于运行/usr/local/hadoop/sbin/hadoop
。我们可以将 Hadoop 命令的相关目录加入到 PATH 环境变量中,这样就可以直接通过start-dfs.sh
开启 Hadoop,也可以直接通过 hdfs 访问 HDFS 的内容,方便平时的操作。 同样我们选择在’ ~/.bashrc ‘中进行设置(’vim ~/.bashrc’,与 JAVA_HOME 的设置相似),在文件最前面加入如下单独一行:
$ export PATH=$PATH:/usr/local/hadoop/sbin:/usr/local/hadoop/bin
$ source ~/.bashrc
$ hdfs dfs -ls input