使用下面表中的软件版本进行配置: |
准备好后,按照下面的步骤进行配置。 |
-
配置VMware网络
在VMWare主界面,点击“编辑”>“虚拟网络编辑”菜单进入虚拟网卡参数设置界面。选择VMnet8条目,点击“NAT设置”按钮后可以看到我们的VMWare Workstation为NAT连接的虚拟机设定的默认网关,此处为192.168.222.2,以及子网掩码,此处为255.255.255.0。
2. 准备机器
通过VMware新建一台CentOS 6.4虚拟机,操作系统安装完成后。
【熟悉常用的Linux操作
- cd命令:切换目录
(1)切换到目录“/usr/local”
$ cd /usr/local |
(2)切换到当前目录的上一级目录
$ cd .. |
(3)切换到当前登录Linux系统的用户的自己的主文件夹
$ cd ~ |
- ls命令:查看文件与目录
(4)查看目录“/usr”下的所有文件和目录
$ cd /usr $ ls -al |
- mkdir命令:新建目录
(5)进入“/tmp”目录,创建一个名为“a”的目录,并查看“/tmp”目录下已经存在哪些目录
$ cd /tmp $ mkdir a $ ls -al |
(6)进入“/tmp”目录,创建目录“a1/a2/a3/a4”
$ cd /tmp $ mkdir -p a1/a2/a3/a4 |
- rmdir命令:删除空的目录
(7)将上面创建的目录a(在“/tmp”目录下面)删除
$ cd /tmp $ rmdir a |
(8)删除上面创建的目录“a1/a2/a3/a4” (在“/tmp”目录下面),然后查看“/tmp”目录下面存在哪些目录
$ cd /tmp $ rmdir -p a1/a2/a3/a4 $ ls -al |
- cp命令:复制文件或目录
(9)将当前用户的主文件夹下的文件.bashrc复制到目录“/usr”下,并重命名为bashrc1
$ sudo cp ~/.bashrc /usr/bashrc1 |
(10)在目录“/tmp”下新建目录test,再把这个目录复制到“/usr”目录下
$ cd /tmp $ mkdir test $ sudo cp -r /tmp/test /usr |
- mv命令:移动文件与目录,或更名
(11)将“/usr”目录下的文件bashrc1移动到“/usr/test”目录下
$ sudo mv /usr/bashrc1 /usr/test |
(12)将“/usr”目录下的test目录重命名为test2
$ sudo mv /usr/test /usr/test2 |
- rm命令:移除文件或目录
- (13)将“/usr/test2”目录下的bashrc1文件删除
$ sudo rm /usr/test2/bashrc1 |
(14)将“/usr”目录下的test2目录删除
$ sudo rm -r /usr/test2 |
- cat命令:查看文件内容
(15)查看当前用户主文件夹下的.bashrc文件内容
$ cat ~/.bashrc |
- tac命令:反向查看文件内容
(16)反向查看当前用户主文件夹下的.bashrc文件的内容
$ tac ~/.bashrc |
- more命令:一页一页翻动查看
(17)翻页查看当前用户主文件夹下的.bashrc文件的内容
$ more ~/.bashrc |
- head命令:取出前面几行
(18)查看当前用户主文件夹下.bashrc文件内容前20行
$ head -n 20 ~/.bashrc |
(19)查看当前用户主文件夹下.bashrc文件内容,后面50行不显示,只显示前面几行
$ head -n -50 ~/.bashrc |
- tail命令:取出后面几行
(20)查看当前用户主文件夹下.bashrc文件内容最后20行
$ tail -n 20 ~/.bashrc |
(21)查看当前用户主文件夹下.bashrc文件内容,并且只列出50行以后的数据
$ tail -n +50 ~/.bashrc |
- touch命令:修改文件时间或创建新文件
(22)在“/tmp”目录下创建一个空文件hello,并查看文件时间
$ cd /tmp $ touch hello $ ls -l hello |
(23)修改hello文件,将文件时间整为5天前
$ touch -d “5 days ago” hello |
- chown命令:修改文件所有者权限
(24)将hello文件所有者改为root帐号,并查看属性
$ sudo chown root /tmp/hello $ ls -l /tmp/hello |
- find命令:文件查找
(25)找出主文件夹下文件名为.bashrc的文件
$ find ~ -name .bashrc |
- tar命令:压缩命令
(26)在根目录“/”下新建文件夹test,然后在根目录“/”下打包成test.tar.gz
$ sudo mkdir /test $ sudo tar -zcv -f /test.tar.gz test |
(27)把上面的test.tar.gz压缩包,解压缩到“/tmp”目录
$ sudo tar -zxv -f /test.tar.gz -C /tmp |
- grep命令:查找字符串
(28)从“~/.bashrc”文件中查找字符串'examples'
$ grep -n 'examples' ~/.bashrc |
- 配置环境变量
(29)请在“~/.bashrc”中设置,配置Java环境变量
首先,使用vim编辑器打开文件“~/.bashrc”,命令如下:
$ vim ~/.bashrc |
然后,在该文件的最上面加入一行如下形式的语句:
export JAVA_HOME=JDK安装路径 |
最后,执行如下命令使得环境变量配置生效:
$ source ~/.bashrc |
(30)查看JAVA_HOME变量的值
$ echo $JAVA_HOME |
】
使用root用户登录,添加一个新用户hadoop。设置hadoop用户的密码并授予hadoop用户sudo权限。
[root@localhost ~]$ useradd hadoop
[root@localhost ~]$ passwd hadoop
[root@localhost ~]$ chmod u+w /etc/sudoers
[root@localhost ~]$ vim /etc/sudoers
# 在root ALL=(ALL) ALL 下 添加hadoop ALL=(ALL) ALL
[root@localhost ~]$ chmod u-w /etc/sudoers
3. 设置静态IP
VMware默认使用动态的IP,但是由于Hadoop集群是使用机器名进行定位的,在/etc/hosts中配置了机器名和IP的映射,如果IP不断变化,则需要不断修改配置文件,所以这里需要把IP设置为静态,方便后面的操作。
1)修改/etc/sysconfig/network-scripts/ifcfg-eth0
[root@localhost ~]$ vim /etc/sysconfig/network-scripts/ifcfg-eth0
# 修改内容如下:
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.222.131
NETMASK=255.255.255.0
GATEWAY=192.168.222.2
# HWADDR=00:0C:29:C3:34:BF # 这个需要根据自己的机器进行设置
ONBOOT=yes
TYPE=Ethernet
IPV6INIT=no
DNS1=192.168.222.2
2)修改/etc/sysconfig/network
[root@localhost ~]$ vim /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=localhost.localdomain
GATEWAY=192.168.222.2
3)修改DNS信息
[root@localhost ~]$ vim/etc/resolv.conf
nameserver 192.168.222.2
search bogon
#使配置信息立即生效
[root@localhost ~]$ source /etc/resolv.conf
#重启网络服务
[root@localhost ~]$ service network restart
[也可以在网络连接面板上进行配置]
4)关闭防火墙并修改其启动策略为不开机启动
[root@localhost ~]$ service iptables stop
#防火墙不开机启动
[root@localhost ~]$ chkconfig iptables off
4. 安装JDK
1)使用yum search jdk在线查找jdk列表,任意选择一个版本进行安装,这里安装“java-1.7.0-openjdk-devel.x86_64”。
[root@localhost ~]$ yum search jdk
[root@localhost ~]$ yum install java-1.7.0-openjdk-devel.x86_64 –y
【注:可以下载java软件解压缩即可】
2)配置Java环境变量。
# 查询JDK路径
[root@localhost ~]$ whereis java
[root@localhost ~]$ ll /usr/bin/java
[root@localhost ~]$ ll /etc/alternatives/java #这是可以看到JDK路径了
#修改配置文件
[root@localhost ~]$ vim /etc/profile
#在末尾追加
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64
export MAVEN_HOME=/home/hadoop/local/opt/apache-maven-3.3.1
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#保存配置后使用source命令是配置立即生效
[root@localhost ~]$ source /etc/profile
3)使用java –version命令查看环境变量配置是否成功。
[root@localhost ~]$ java -version
OpenJDK Runtime Environment (rhel-2.5.4.0.el6_6-x86_64 u75-b13)
OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode)
至此,我们已经完成JDK的安装和配置,接下来使用VMWare克隆两台机器,并分别设置静态IP地址为192.168.222.132,192.168.222.133。
注意:克隆完成,启动机器后,会出现没有网络设备信息,无法连接网络的情况,解决方案如下:
删除/etc/udev/rules.d/70-persistent-net.rules,修改/etc/sysconfig/network-scripts/ifcfg-eth0,注释硬件地址那一行,重启系统。
5. 配置ssh免登录
1)启动三台机器,分别修改名为master、slave1、slave2,重启系统。
[root@localhost ~]$ vim /etc/sysconfig/network
# 修改内容如下
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=master
2)修改master上的/etc/hosts。
[hadoop@master ~]$ sudo vim /etc/hosts
# 内容如下
192.168.222.131 master
192.168.222.132 slave1
192.168.222.133 slave2
3)将hosts文件拷贝到slave1和slave2
[hadoop@master ~]$ sudo scp /etc/hosts root@slave1:/etc
[hadoop@master ~]$ sudo scp /etc/hosts root@slave2:/etc
4)在master机器上使用hadoop用户登录(确保接下来的操作都是通过hadoop用户执行)。执行$ ssh-keygen -t rsa命令产生公钥。
[hadoop@master ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
7b:75:98:eb:fd:13:ce:0f:c4:cf:2c:65:cc:73:70:53 hadoop@master
The key's randomart image is:
+--[ RSA 2048]----+
| E|
| .|
| ...|
| + =.|
| S + +.*|
| . . + Bo|
| . . . = =|
| . . . * |
| . ..=|
+-----------------+
5)将公钥拷贝到slave1和slave2。
[hadoop@master ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub slave1
# 输入hadoop@slave1的密码
[hadoop@master ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub slave2
# 输入hadoop@slave2的密码
注:第一,将公钥拷贝到自身,[hadoop@master ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub master;
第二,为了使得master、slave1和slave2能互通,在slave1和slave2上做类似操作。
6)再次登录,已经可以不需要密码可以登录slave1,slave2。
[hadoop@master ~]$ ssh slave1
Last login: Wed Mar 25 14:40:41 2015 from master
[hadoop@slave1 ~]$
6. 安装Hadoop
1)在Hadoop官网网站,下载稳定版的并且已经编译好的二进制包,并解压缩。
[hadoop@master ~]$ wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.6.0/hadoop-2.6.0.tar.gz
[hadoop@master ~]$ tar -zxf hadoop-2.6.0.tar.gz -C ~/local/opt
[hadoop@master ~]$ cd ~/local/opt/hadoop-2.6.0
2)设置环境变量。
[hadoop@master ~]$ vim ~/.bashrc
export HADOOP_PREFIX=$HOME/local/opt/hadoop-2.6.0
export HADOOP_COMMON_HOME=$HADOOP_PREFIX
export HADOOP_HDFS_HOME=$HADOOP_PREFIX
export HADOOP_MAPRED_HOME=$HADOOP_PREFIX
export HADOOP_YARN_HOME=$HADOOP_PREFIX
export HADOOP_CONF_DIR=$HADOOP_PREFIX/etc/hadoop
export PATH=$PATH:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin
3)修改配置文件(vim $HADOOP_PREFIX/etc/hadoop/hadoop-env.sh),添加下面的命令(这里需要注意JAVA_HOME的设置需要根据自己机器的实际情况进行设置)。
export JAVA_HOME=/usr/lib/jvm/java
4)修改配置文件(vim $HADOOP_PREFIX/etc/hadoop/core-site.xml)。
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/local/var/hadoop/tmp/hadoop-${user.name}</value>
</property>
</configuration>
5)修改配置文件(vim $HADOOP_PREFIX/etc/hadoop/hdfs-site.xml)。
<configuration>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///home/hadoop/local/var/hadoop/hdfs/datanode</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///home/hadoop/local/var/hadoop/hdfs/namenode</value>
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>file:///home/hadoop/local/var/hadoop/hdfs/namesecondary</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
6)修改配置文件(vim $HADOOP_PREFIX/etc/hadoop/yarn-site.xml)。
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
</configuration>
7)修改配置文件(vim $HADOOP_PREFIX/etc/hadoop/mapred-site.xml)。
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobtracker.staging.root.dir</name>
<value>/user</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888 </value>
</property>
</configuration>
7*)修改配置文件(vim $HADOOP_PREFIX/etc/hadoop/slaves)。
slave1
slave2
slaves文件是指定HDFS上有哪些DataNode节点。
7**)分发Hadoop文件
首先在其他两台机器上创建存放Hadoop的目录
[hadoop@slave1~]$ mkdir local
[hadoop@slave1~]$ cd local
[hadoop@slave1 local]$ mkdir opt
[hadoop@slave2~]$ mkdir local
[hadoop@slave2~]$ cd local
[hadoop@slave2 local]$ mkdir opt
通过Scp分发
Hadoop根目录下的share/doc目录是存放的hadoop的文档,文件相当大,建议在分发之前将这个目录 删除掉,可以节省硬盘空间并能提高分发的速度。
doc目录大小有1.6G。
[hadoop@master ~]$ rm -r local/opt/hadoop-2.6.0/share/doc
[hadoop@master ~]$ scp -r local/opt/hadoop-2.6.0 hadoop@slave1:local/opt
[hadoop@master ~]$ scp -r local/opt/hadoop-2.6.0 hadoop@slave2:local/opt
8)格式化hdfs。
[hadoop@master ~]$ hdfs namenode -format
如果需要重新格式化NameNode,需要先将原来NameNode和DataNode下的文件全部删除,不然会报错, NameNode 和 DataNode 所在1目录是在 core—site.xml 中 hadoop.tmp.dir、dfs. namenode. name. dir、 dfs.datanode.data.dir 属性配置的。
因为每次格式化,默认是创建一个集群ID,并写入NameNode和DataNode的VERSION文件中(VERSION文件所 在目录为dfs/name/current和dfs/data/current),重新格式化时,默认会生成一个新的集群ID,如果不删 除原来的目录,会导致namenode中的VERSION文件中是新的集群ID,而DataNode中是旧的集群ID,不一致时 会报错。
另一种方法是格式化时指定集群ID参数,指定为旧的集群ID。
9)启动hadoop集群,启动结束后使用jps命令列出守护进程验证安装是否成功。
#启动HDFS
[hadoop@master ~]$ start-dfs.sh
#启动Yarn
[hadoop@master ~]$ start-yarn.sh
【注:也可以直接使用start-all.sh启动Hadoop】
# master主节点:
[hadoop@master ~]$ jps
3717 SecondaryNameNode
3855 ResourceManager
3539 NameNode
3903 JobHistoryServer
4169 Jps
#slave1节点
[hadoop@slave1 ~]$ jps
2969 Jps
2683 DataNode
2789 NodeManager
# slave2 节点
[hadoop@slave2 ~]$ jps
2614 Jps
2363 DataNode
2470 NodeManager
发现JobHistoryServer没有启动,所以需要执行
[hadoop@master hadoop-2.6.0]$ sbin/mr-jobhistory-daemon.sh start historyserver
starting historyserver, logging to /home/hadoop/local/opt/hadoop-2.6.0/logs/mapred-hadoop-historyserver-master.out
【Web查看
http://192.168.42.128:50070/】
10)关闭hadoop集群,关闭结束后使用jps命令列出守护进程验证关闭是否成功。
[hadoop@master hadoop-2.6.0]$ stop-all.sh
[hadoop@master hadoop-2.6.0]$ sbin/mr-jobhistory-daemon.sh stop historyserver