hadoop 1.x 安装配置
在安装Haoop的时候通常依赖一定的环境,如操作系统、JDK、SSH服务等。因此,在进行安装前,我们先进行这些环境的配置,然后安装Hadoop。Hadoop可以在单个节点上运行,使用进程模拟多台服务器。是完全分布式运行的一个特殊实例,元数据节点、数据节点、辅助元数据节点全部在一台服务器上。
主机规划
HDP125作为Master节点,其余主机作为Slave节点。
操作系统
Hadoop可以同时支持在Linux和Windows系统下进行安装,但是在windows系统下没有进行过大量的测试,不稳定容易出现问题。因此,我们使用Linux系统进行安装。
在国内企业中使用最多的Linux系统是CentOS,笔者就使用CentOS的最新版6.5(写作时)进行安装。
关闭iptables
关闭正在运行的iptbables防火墙:
service iptables stop
关闭开机自动启动iptables:
chkconfig iptables off
关闭SElinux
关闭自在运行的SElinux:
setenforce 0
修改配置文件,关闭开机自己启动SElinux:
vi /etc/selinux/config
SELINUX=disabled
配置主机名和映射:
注意:主机名只能用英文字母、数字、“-”。不能使用下划线“_”,会出现问题。
映射
Spark通过主机名来进行互相访问,通过修改/etc/hosts文件可配置本地主机名映射关系,在hosts文件中添加计算机的名称和IP的对应关系,如在本机中添加master的主机(假设IP为172.16.219.125),在末尾添加内容为: 172.16.219.125 HDP125
所有主机都在/etc/hosts添加:
172.16.219.125 HDP125
172.16.219.126 HDP126
172.16.219.127 HDP127
172.16.219.128 HDP128
修改主机名
修改本次运行期间的主机名:
hostname HDP125
修改/etc/sysconfig/network文件,将主机名改为HDP125:
HOSTNAME=HDP125
操作系统启动的时候,会读取该文件并设置主机名。因此,修改后不会立即生效。只有当系统重启后,主机名便会生效。
在所有主机上执行上面两步,并把HDP125替换成相应主机名。
用户:
在所有主机上添加用户:
groupadd hadoop
useradd hadoop -g hadoop
SSH无密码登录
Master到Slaves节点需要配置SSH无密码登录。
在Master生成公私钥对:
su hadoop
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
在其它主机上创建~/.ssh文件夹:
su hadoop
mkdir ~/.ssh
chmod 700 ~/.ssh
把公钥~/.ssh/dsa.pub发送到其它主机:
scp ~/.ssh/dsa.pub hadoop@HDPXXX:~/.ssh/id_dsa.pub
测试是否成功:
ssh HDPxxx
安装Java的JDK
解压:
tar -zxvf jdk-7u51-linux-x64.tar.gz -C /opt
ln -s /opt/jdk1.7.0_51 /opt/jdk
配置环境变量:
#JDK setting
export JAVA_HOME=/opt/jdk
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
配置文件句柄数
修改本次运行期间的句柄数:
ulimit -n 65535
修改操作系统重启时默认的句柄数:
vi /etc/security/limits.conf
\* hard nofile 65535
\* soft nofile 65535
Hadoop的下载与解压
到hadoop.apache.org上下载Hadoop的安装文件,笔者使用的是 “hadoop-1.2.1.tar.gz”。
在发布式安装模式下,所有服务器Hadoop的安装目录需要一样。笔者安装的位置为/opt/hadoop,使用解压命令如下:
tar -zxvf hadoop-1.2.1.tar.gz -C /opt/
mv /opt/hadoop-1.2.1 /opt/hadoop
chown -R hadoop:hadoop /opt/hadoop
su hadoop
配置hadoop-env.sh
修改hadoop目录下conf/hadoop-env.sh的环境变量,在末尾添加:
export JAVA_HOME=/opt/jdk
注:此处采用最小配置
配置core-site.xml
修改hadoop目录下conf/core-site.xml的配置文件,在
配置hdfs-site.xml
修改hadoop目录下conf/hdfs-site.xml的配置文件,在
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/${user.name}/dfs_name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/${user.name}/dfs_data</value>
</property>
<property>
<name>dfs.support.append</name>
<value>true</value>
</property>
<property>
<name>dfs.datanode.max.xcievers</name>
<value>4096</value>
</property>
说明:
dfs.replication:文件复本数
dfs.namenode.name.dir:设置NameNode存储元数据(fsimage)的本地文件系统位置
dfs.datanode.data.dir:设置DataNode存储数据的本地文件系统位置
dfs.support.append:设置HDFS是否支持在文件末尾追加数据
dfs.datanode.max.xcievers:设置datanode可以创建的最大xcievers数
配置mapred-site.xml
修改hadoop目录下conf/mapred-site.xml的配置文件,在
<property>
<name>mapred.job.tracker</name>
<value>HDP125:9001</value>
</property>
<property>
<name>mapred.system.dir</name>
<value>/home/${user.name}/mapred/system</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/home/${user.name}/mapred/local</value>
</property>
<property>
<name>mapreduce.job.counters.limit</name>
<value>1400</value>
</property>
<property>
<name>mapred.map.tasks.speculative.execution</name>
<value>false</value>
</property>
<property>
<name>mapred.reduce.tasks.speculative.execution</name>
<value>false</value>
</property>
注:属性名为mapred.job.tracker来配置job tracker交互端口,
配置辅助名称节点:
修改hadoop目录conf/masters的配置文件,修改内容为:
HDP125
配置子节点:
修改hadoop目录conf/slave文件,每行一个节点,伪分布式修改内容为:
HDP126
HDP127
HDP128
把配置好的Hadoop程序复制到其它节点
scp -r /opt/hadoop root@HDP126:/opt/
chown -R hadoop:hadoop /opt/hadoop
启动
格式化
第一次在使用一个分布式文件系统,需要对其进行格式化:
./bin/hadoop namenode -format
启动与停止
启动Hadoop守护进程:
./bin/start-all.sh
Hadoop守护进程的日志写入到${HADOOP_LOG_DIR}目录(默认为logs下)。
停止Hadoop:
完成全部操作后,停止Hadoop守护进程:
bin/stop-all.sh
使用
将输入文件拷贝到分布式文件系统:
bin/hadoop fs -put ./conf/core-site.xml input
运行发行版提供的WordCount示例程序:
./bin/hadoop jar hadoop-examples-1.2.1.jar wordcount input output
查看输出文件:
在分布式文件系统上查看输出文件:
$ bin/hadoop fs -cat output/*
或者将输出文件从分布式文件系统拷贝到本地文件系统查看:
bin/hadoop fs -get output output
cat output/*
Hadoop自带的WEB管理界面
浏览NameNode和JobTracker的WEB管理界面,它们的地址默认为:
NameNode - http://master :50070/dfshealth.jsp
JobTracker - http://master:50030/jobtracker.jsp