环境准备
1.1 操作系统:CentOS 6.5
1.2 集群主机: vi /etc/hosts
HostName IP Purpose
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.18.51.52 master.hadoop
10.18.51.53 slave1.hadoop
10.18.51.54 slave2.hadoop
10.18.51.55 slave3.hadoop
10.18.51.56 slave4.hadoop
10.18.51.57 slave5.hadoop
10.18.51.58 slave6.hadoop
10.18.51.59 slave7.hadoop
10.18.51.60 slave8.hadoop
10.18.51.61 slave9.hadoop
10.18.51.51 slave10.hadoop
10.18.51.50 slave11.hadoop
10.18.51.49 slave12.hadoop
按照上述表格,设置各个主机的主机名称和IP地址(必须是静态的):
(1) 主机名称修改:
可用hostname命令或直接修改文件/etc/sysconfig/network文件:hostname=…
(2) IP地址修改:
可用ifconfig命令或直接修改文件/etc/sysconfig/network-scripts/ifcfg-eth0(与使用网卡对应文件),在其中主要配置:IP/GETWAY/NETMASK/DNS等。
Linux开机是网络默认是断开的,
设置网络自动开机自动连接:
右击网络链接图标-》 edit connections... -》 选中“etho” 选择edit 出现下面的对话 框 把 connect automatically 选上即可。
方法2 修改配置文件 # vi /etc/sysconfig/network-scripts/ifcfg-eth0 将ONBOOT=no 改成 yes 就表示开机后默认链接etho # /etc/init.d/network restart编辑/etc/hosts文件,添加如下内容:(每台机器)
10.18.51.52 master.hadoop
10.18.51.53 slave1.hadoop
10.18.51.54 slave2.hadoop
10.18.51.55 slave3.hadoop
10.18.51.56 slave4.hadoop
10.18.51.57 slave5.hadoop
10.18.51.58 slave6.hadoop
10.18.51.59 slave7.hadoop
10.18.51.60 slave8.hadoop
10.18.51.61 slave9.hadoop
10.18.51.51 slave10.hadoop
10.18.51.50 slave11.hadoop
10.18.51.49 slave12.hadoop
编辑/etc/profile文件(或Hadoop用户的 .bash_profile),在其文件末尾添加JDK相关环境变量:
export JAVA_HOME=/usr/java/jdk1.7.0_67
export CLASSPATH=.:$JAVA_HOME/lib:$ JAVA_HOME/jre/lib:$CLASSPATH
(直接指定*.jar文件)
export JAVA_OPTS=”-Xms1024m-Xmx2048m”
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
记住:在REDHAT中,$CLASSPATH $PATH 一定要放在后面。
export JAVA_HOME=/usr/java/jdk1.7.0_67
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
export JAVA_OPTS=”-Xms1024m-Xmx2048m”
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
有的网站:CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
然后执行: source /etc/profile ,使配置立即生效。
运行 java -version 时候可能会提示权限不够,只要修改相应文件,添加可执行权限即可。
vi /etc/profile 也可以一次性配置先(建议初学者先不一次性配置)
export JAVA_HOME=/usr/java/jdk1.7.0_67
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib:$CLASSPATH
export JAVA_OPTS="-Xms1024m-Xmx2048m"
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export HADOOP_HOME=/usr/hadoop
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/lib
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export PATH=$PATH:/usr/apache-ant/bin
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native
推出之后,执行:source /etc/profile
关闭防火墙,SELINUX关不关闭应该无所谓
查看SELinux状态:
1) /usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态
SELinux status: enabled
2) getenforce ##也可以用这个命令检查
关闭SELinux:
1) 临时关闭(不用重启机器):
setenforce 0 ##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
2) 修改配置文件需要重启机器:
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可
service iptables status可以查看到iptables服务的当前状态
1) 重启后生效
开启: chkconfig iptables on 关闭: chkconfig iptables off 或者 /sbin/chkconfig --level 2345 iptables off 2) 即时生效,重启后失效service 方式 开启: service iptables start 关闭: service iptables stopiptables方式 查看防火墙状态: /etc/init.d/iptables status 暂时关闭防火墙: /etc/init.d/iptables stop 重启iptables: /etc/init.d/iptables restart配置主机名(在系统安装的时候就已经指定了 )和Ip,并且设置自启动,服务器两个网卡,目前选择第一个网卡插口
设置各个主机的主机名称和IP地址(必须是静态的):
(3) 主机名称修改:
可用hostname命令或直接修改文件/etc/sysconfig/network文件:hostname=…
(4) IP地址修改:
可用ifconfig命令或直接修改文件/etc/sysconfig/network-scripts/ifcfg-eth0(与使用网卡对应文件),在其中主要配置:IP/GETWAY/NETMASK/DNS等。
Linux开机是网络默认是断开的,
设置网络自动开机自动连接:
右击网络链接图标-》 edit connections... -》 选中“etho” 选择edit 出现下面的对话 框 把 connect automatically 选上即可。
或者:# vi /etc/sysconfig/network-scripts/ifcfg-eth0
将ONBOOT=no 改成 yes 就表示开机后默认链接etho # /etc/init.d/network restart修改主机名:
/etc/sysconfig/network中修改。
Hadoop安装配置(每台机器)
;很好很详细的网址
下载Hadoop安装包:hadoop安装包以两种形式发布,二进制形式和源码形式。这里我们下载二进制发布包。(注意:如何操作系统时64位,则需下载源码包进行编译,重新生成本地库文件,因为默认的二进制包是在32位环境下编译的)。
2.2 将Hadoop包解压到制定目录,如:/usr/hadoop
cd /usr/hadoop
tar –zxvf hadoop2.3.0.tar.gz
2.3 配置hadoop环境变量 在root用户下:/etc/profile里面添加即可,添加内容如下:(上面说过,可以一次性都配置完)
# hadoop
root下,在/etc/profile中添加:不用上面的,用下面的:
export HADOOP_HOME=/usr/hadoop
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_CONF_DIR
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native (不要黄的)
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
2.4 编辑<HADOOP_HOME>/etc/hadoop/hadoop-env.sh文件与yarn-env.sh文件,添加JAVA_HOME变量 下面是配置文件详解的网址:;
export JAVA_HOME=/usr/java/jdk1.7.0_67/
2.5 编辑<HADOOP_HOME>/etc/hadoop/core-site.xml文件,内容如下:
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/hadoop/tmp</value> #tmp 需提前创建
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master.hadoop:9000</value>
修改成:试试
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<property> #可选
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
2.6编辑<HADOOP_HOME>/etc/hadoop/hdfs-site.xml文件,内容如下:
vi hdfs-site.xml
<property>
<name>dfs.replication</name> #enable
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name> #enable
<value>file:/usr/hadoop/dfs/name</value> # created
</property>
<property>
<name> dfs.datanode.data.dir </name> #enable
<value> file:/usr/hadoop/dfs/data </value> # created
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
2.7编辑<HADOOP_HOME>/etc/hadoop/yarn-site.xml文件,内容如下:
为何要配置 yarn: ;
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce.shuffle</value> 或者: <value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop.main</value>
</property>
<property>
<name> yarn.resourcemanager.address</name>
<value> hadoop.main:8032</value>
</property>
<property>
<name> yarn.resourcemanager.scheduler.address</name>
<value> hadoop.main:8030</value>
</property>
<property>
<name> yarn.resourcemanager.resource-tracker.address</name>
<value> hadoop.main:8031</value>
</property>
<property>
<name> yarn.resourcemanager.admin.address</name>
<value> hadoop.main:8033</value>
</property>
<property>
<name> yarn.resourcemanager.webapp.address</name>
<value> hadoop.main:8088</value>
</property>
2.8编辑<HADOOP_HOME>/etc/hadoop/mapred-site.xml文件,内容如下:
<property>
<name>mapreduce.framework.name</name> #Enable
<value>yarn</value>
</property>
<property>
以下不要配置的:
<name>mapreduce.jobhistory.address</name>
<value>hadoop.main:10020</value>
</property>
<property>
<name> mapreduce.jobhistory.webapp.address </name>
<value> hadoop.main:19888</value>
</property>
2.9 编辑<HADOOP_HOME>/etc/hadoop/slaves与masters文件
masters文件:(每个Slave机器上必须有)
配置masters和slaves文件来设置主从结点,注意最好使用主机名,并且保证机器之间通过主机名可以互相访问,每个主机名一行。
master.hadoop 在master文件中
slave1.hadoop 以下都在slaves文件中:
slave2.hadoop
slave3.hadoop
slave4.hadoop
slave5.hadoop
slave6.hadoop
slave7.hadoop
slave8.hadoop
slave9.hadoop
slave10.hadoop
slave11.hadoop
slave12.hadoop
2.10 上述配置任务完成之后,首先格式化分布式文件系统:
命令:hdfs namenode –format (普通用户进行操作)
用 start-all.sh 启动集群。
查看集群状态:
./bin/hdfs dfsadmin –report
5. 查看文件块组成:
./bin/hdfsfsck / -files -blocks
6. 查看HDFS: ??
http://16.187.94.161:50070
7. 查看RM: ??
http:// 16.187.94.161:8088
2.13 运行WordCount程序
在Master主机上创建三个文本文件:file1.txt,file2.txt,file3.txt, 并利用以下命令在分布式文件系统上创建文件夹,且将本地文件file*.txt上传到hdfs。
hdfs dfs -ls /
hdfs dfs –mkdir /in # 在hdfs上创建文件夹
hdfs dfs –put file*.txt /in #将本地文件上传到hdfs
注意:hadoop 默认运行在安全模式,可以使用命令:hadoop dfsadmin –safemode leave退出安全模式。
将当前目录切换到/usr/hadoop:执行下面命令允许hadoop自带wordcount程序。
Hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-example.jar wordcount /in /out
注意:/out目录不能提前创建好,有程序自己创建。