最近学习hadoop,使用vmware建立一个虚拟的集群环境,实验环境如下:
机器名 IP地址 操作系统
master 192.168.1.115 Centos x64
slave1 192.168.1.111 Centos x64
slave2 192.168.1.112 Centos x64
1、安装虚拟机。
1)安装vmware,用centos x64做一份虚拟系统,网络使用桥接方式,硬盘动态预留40G。
2)用vmware自带clone功能,克隆出两份副本。
2、关闭防火墙。
1)关闭SELINUX:vi /etc/selinux/config,设置SELINUX=disabled,保存退出。
2)关闭防火墙:/sbin/service iptables stop;永久关闭:chkconfig --level 35 iptables off
3、配置网络。
手动配置IP地址。
4、修改主机名和映射。
1)修改主机名: vi /etc/sysconfig/network
例如:
NETWORKING=yes
HOSTNAME=slave2
2)修改hosts映射:vi /etc/hosts,添加主机映射。
例如:
192.168.1.115 master
192.168.1.111 slave1
192.168.1.112 slave2
重启网络:service network restart
5、生成ssh免密码(用普通用户生成)
1)三台机生成密钥对:ssh-keygen -t rsa -f ~/.ssh/id_rsa
2)将slave1和slave2生成的公钥拷贝到master:
scp 192.168.1.111:/home/huser/.ssh/id_rsa.pub ./slave1_rsa.pub
scp 192.168.1.112:/home/huser/.ssh/id_rsa.pub ./slave2_rsa.pub
master上公钥也拷贝一份:cp id_rsa.pub master_rsa.pub
3)3个公钥文件中的内容存放至authorized_keys,采用文本追加的方式:
cat master_rsa.pub >> authorized_keys
cat slave1_rsa.pub >> authorized_keys
cat slave2_rsa.pub >> authorized_keys
4)生成的authorized_keys需要设置权限:
chmod 600 authorized_keys
5)authorized_keys拷贝到另外两台机器上,ssh免密码登录其他机器测试。
6、安装JAVA
1)Linux系统可能自带OpenJDK或者IBMJDK,需要卸载掉重新安装Oracle JDK。
查看JDK信息:rpm -qa|grep java
卸载已经安装的JAVA:yum -y remove java-1.6.0-openjdk-1.6.0.0-3.1.13.1.el6_5.x86_64,所有安装版本都卸载,直到提示找不到Java环境。
2)在/usr下创建一个java目录,将JAVA安装包上传,解压文件
tar -xzvf jdk-7u51-linux-x64.tar.gz
3)配置JAVA环境
先备份 cp /etc/profile /etc/profile.bak
vi编辑profile
注释一行
#export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
增加JAVA环境变量
export JAVA_HOME=/usr/java/jdk1.7.0_51
export CLASSPATH=.:JAVAHOME/jre/lib:JAVA_HOME/lib/tools.jar
export JRE_HOME=$JAVA_HOME/jre
export PATH=JAVAHOME/bin:PATH
生效环境变量:source /etc/profile
用java -version查看是否JAVA环境变量是否设置正确。
7、安装Hadoop 2.x(用普通用户安装)
1)下载hadoop-2.2.0.tar.gz,上传到/home/huser/hadoop。
2)修改etc/hadoop/hadoop-env.sh中的export JAVA_HOME=usr/java/jdk1.7.0_51,即前面安装的JAVA路径。
3)修改etc/hadoop/yarn-env.sh中的export JAVA_HOME=/usr/java/jdk1.7.0_51,即前面安装的JAVA路径。
4)修改etc/hadoop/slaves,添加:
slave1
slave2
5)修改etc/hadoop/core-site.xml,在configuration下面添加:
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/huser/hadoop/hadoop-2.2.0/tmp/</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>hadoop.proxyuser.hduser.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hduser.groups</name>
<value>*</value>
</property>
##需要新建tmp文件夹,/home/huser/hadoop/hadoop-2.2.0/tmp/
6)修改etc/hadoop/hdfs-site.xml,在configuration下面添加:
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/huser/hadoop/hadoop-2.2.0/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/huser/hadoop/hadoop-2.2.0/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
##需要新建name和data文件夹,/home/huser/hadoop/hadoop-2.2.0/name,/home/huser/hadoop/hadoop-2.2.0/data
7)修改etc/hadoop/mapred-site.xml,在configuration下面添加:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</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>
8)修改etc/hadoop/yarn-site.xml,在configuration下面添加:
<property>
<name>yarn.nodemanager.aux-services</name>
<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.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
9)以上个别配置文件默认不存在,复制相应的template文件获取。
10)格式化namenode:./bin/hdfs namenode –format
11)启动hdfs: ./sbin/start-dfs.sh,会有错误。
14/04/19 04:27:19 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting namenodes on [Java HotSpot(TM) 64-Bit Server VM warning: You have loaded library /home/huser/hadoop/hadoop-2.2.0/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
master]
64-Bit: ssh: Could not resolve hostname 64-Bit: Name or service not known
Server: ssh: Could not resolve hostname Server: Name or service not known
You: ssh: Could not resolve hostname You: Name or service not known
warning:: ssh: Could not resolve hostname warning:: Name or service not known
##Hadoop本身没有32位和64位区分,但JAVA本身有位数区分,引用了本地库就要注意位数,检查位数file ./libhadoop.so.1.0.0
./libhadoop.so.1.0.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped
##可以看出类库是32位,所以会报错,解决办法:
一种重新编译Hadoop,后续。
二种暂时解决,修改etc/hadoop/hadoop-env.sh:
export HADOOP_COMMON_LIB_NATIVE_DIR=/home/huser/hadoop/hadoop-2.2.0/lib/native
export HADOOP_OPTS="-Djava.library.path=/home/huser/hadoop/hadoop-2.2.0/lib"
12)再次启动集群
启动hdfs: ./sbin/start-dfs.sh
启动yarn: ./sbin/start -yarn.sh
13)jps命令查看启动情况。
master上面:
22143 NameNode
22529 Jps
22316 SecondaryNameNode
22459 ResourceManager
slave上面:
21438 Jps
21341 NodeManager
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com