hadoop 2.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-2.5.1.tar.gz”。
在发布式安装模式下,所有服务器Hadoop的安装目录需要一样。笔者安装的位置为/opt/hadoop,使用解压命令如下:
tar -zxvf hadoop-2.5.1.tar.gz -C /opt/
mv /opt/hadoop-2.5.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的配置文件,在
<property>
<name>fs.default.name</name>
<value>hdfs://HDP125:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/${user.name}/tmp</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
说明:
fs.defaultDFS:设置NameNode的IP和端口
hadoop.tmp.dir:设置Hadoop临时目录,(默认/tmp,机器重启会丢失数据!)
fs.trash.interval:开启Hadoop回收站
配置hdfs-site.xml
修改hadoop目录下conf/hdfs-site.xml的配置文件,在
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/${user.name}/dfs_name</value>
</property>
<property>
<name>dfs.datanode.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数
配置yarn-site.xml
修改hadoop目录下etc/hadoop/yarn-site.xml的配置文件,在
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.timeline-service.hostname</name>
<value>master</value>
</property>
注:属性名为mapred.job.tracker来配置job tracker交互端口
配置mapred-site.xml
修改hadoop目录下etc/hadoop/mapred-site.xml的配置文件,在
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
配置子节点:
修改hadoop目录etc/hadoop/slave文件,每行一个节点,伪分布式修改内容为:
HDP126
HDP127
HDP128
把配置好的Hadoop程序复制到其它节点
scp -r /opt/hadoop root@HDP126:/opt/
chown -R hadoop:hadoop /opt/hadoop
启动
格式化
第一次使用一个分布式文件系统,需要对其进行格式化:
./bin/hadoop namenode –format
启动Hadoop守护进程:
./sbin/start-all.sh
Hadoop守护进程的日志写入到${HADOOP_LOG_DIR}目录(默认为logs下)。
停止Hadoop守护进程:
sbin/stop-all.sh
验证集群
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.1.jar randomwriter out
Hadoop自带的WEB管理界面
浏览NameNode和JobTracker的WEB管理界面,它们的地址默认为:
NameNode - http://HDP125:50070/dfshealth.jsp
Yarn - http://HDP125:8088