最近想给公司同事做一个关于hadoop的分享,好久没弄这个了。于是在网上找了些文章。按照步骤,在电脑上运行三个虚拟机来搭建hadoop集群,基本能配置成功。以下是安装配置简易步骤和一些经验。
hadoop-2.5.2版分布式安装配置简易步骤:
1.复制jdk1.7和hadoop-2.5.2压缩包到/usr/local/, 然后解压到当前文件夹
2.配置jdk1.7和hadoop-2.5.2的变量环境:
vi /etc/profile 增加以下内容
#jdk config lmh 2015-12-14
export JAVA_HOME=/usr/local/jdk1.7
export PATH=$PATH:/usr/local/jdk1.7/bin
#hadoop config lmh 2015-12-14
export HADOOP_HOME=/usr/local/hadoop-2.5.2
export PATH=$HADOOP_HOME/bin:$PATH
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
然后在命令行里输入java -version 和hadoop,检验环境变量是否生效。
3.配置机器之间的ssh无密码登录,把master和slave的公钥都互相导入到对方的.ssh/authorized_keys 文件
注意导入完后,双方的机器都要设置目录和文件权限(没有这一步一定不能免密码登录):
chmod 700 .ssh/ 和 chmod 600 .ssh/authorized_keys
4.配置hadoop目录下的etc/hadoop目录下的以下配置文件
4.1所有机器(不分master和slave)都要配置的地方
第一:core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/tmp</value> //这里写入的文件夹要手动创建
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://10.0.1.100:9000</value> //这里的ip地址写入的是master的ip地址
</property>
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
</configuration>
第二:给hadoop-env.sh和yarn-env.sh加入java_home的路径
export JAVA_HOME=/usr/local/jdk1.7
4.2 只有master需要配置的文件
第一: hdfs-site.xml
<configuration>
<property>
<name>dfs.nameservices</name>
<value>hadoop-cluster1</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value> //这里的ip地址写入的是master的ip地址
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///hadoop/name</value> //这里写入的文件夹要手动创建
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///hadoop/data</value> //这里写入的文件夹要手动创建
</property>
<property>
<name>dfs.replication</name>
<value>2</value> //有多少台节点就写多少
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
第二:mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value> //这是hadoop对原有第一代M/R计算模型的改进版框架yarn
</property>
<property>
<name>mapreduce.jobtracker.http.address</name>
<value>master:50030</value> //这里的ip地址写入的是master的ip地址
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value> //这里的ip地址写入的是master的ip地址
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value> //这里的ip地址写入的是master的ip地址
</property>
</configuration>
第三:yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value> //这里的ip地址写入的是master的ip地址
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value> //这里的ip地址写入的是master的ip地址
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value> //这里的ip地址写入的是master的ip地址
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value> //这里的ip地址写入的是master的ip地址
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value> //这里的ip地址写入的是master的ip地址
</property>
</configuration>
4.3格式化文件系统
hdfs namenode -format
注意:这里的格式化文件系统并不是硬盘格式化,只是针对主服务器hdfs-site.xml的dfs.namenode.name.dir和dfs.datanode.data.dir目录做相应的清理工作。
4.4 启动和关闭
在master机器的hadoop目录下执行:
sbin/start-all.sh 等同于运行start-dfs.sh和start-yarn.sh
sbin/stop-all.sh 等同于运行stop-dfs.sh和stop-yarn.sh
4.5 测试访问
http://10.0.1.100:50070/ 查看hdfs节点信息和文件系统,10.0.1.100是master的ip地址
http://10.0.1.100:8088/ 查看map/reduce的job调用情况
5.为了方便,写入每台机器的hosts文件
vi /etc/hosts 增加类似的内容
192.168.1.100 master
192.168.1.101 slave
192.168.1.102 slave2
修改完,可能不会立刻生效。
这时的策略有:
1) 重启机器
2) 重启服务
Ubuntu: $sudo /etc/init.d/networking restart
Gentoo: /etc/init.d/net.eth0 restart
centos: /etc/init.d/network restart
然后用uname -a来查看hosts文件是否已经生效了。
6.最后为了使得机器之间能够互访,要把机器的防火墙关掉,或者手动给iptables加入允许hadoop开启的那些服务端口。
(1) 重启后永久性生效:
开启:chkconfig iptables on
关闭:chkconfig iptables off
(2) 即时生效,重启后失效:
开启:service iptables start
关闭:service iptables stop
7.如果是在虚拟机运行,需要固定这些虚拟机器的ip地址.通过以下步骤去设置
vi /etc/sysconfig/network-scripts/ifcfg-eth0
注释掉原有的dhcp,增加静态地址和dns地址
#BOOTPROTO="dhcp"
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=202.96.128.86
然后重启配置文件使之生效,执行 /etc/init.d/network restart