1、 准备配置hadoop需要的软件
(1) centos 6.5操作系统
(2) jdk-7u79-linux-i586.tar.gz
(3) hadoop-2.2.0-64bit.tar.gz
2、 安装jdk
(1) 解压缩jdk-7u79-linux-i586.tar.gz
执行命令 tar -zxvf jdk-7u79-linux-i586.tar.gz
(2)重命名jdk1.7.0_79为jdk
执行命令 mv jdk1.7.0_79 jdk
(3)配置环境变量,修改/etc/profile文件,增加以下信息
export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin
执行命令 vi /etc/profile
(4)让配置立即生效
执行命令 source /etc/profile
(5)查看是否安装成功
执行命令 java -version
3、 修改主机名
执行命令 vi /etc/sysconfig/network 把文件里面的内容
NETWORKING=yes 改为 NETWORKING=yes
HOSTNAME=localhost.localdomain HOSTNAME=hadoop13
4、配置/etc/hosts文件,使域名和ip对应起来
执行命令 vi /etc/hosts 把文件的内容改为192.168.40.112 hadoop13
5、关闭防火墙,并且不允许防火墙再自动启动
(1)执行命令 service iptables stop 关闭防火墙
(2)执行命令 chkconfig iptables off 设置防火墙不能自启动
6、设置SSH免密码登录
(1)进入 ~/.ssh 目录,生成密钥和公钥
执行命令 cd ~/.ssh
执行命令 ssh-keygen -t rsa (默认的生成密钥方式是dsa)
注意:要连续按下几下Enter键,直到出现一个图片的方框为止
(2)把 ~/.ssh/id_rsa.pub 文件放到 ~/.ssh/authorized_keys文件中
执行命令 cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
(3)验证ssh免登录是否配置成功
执行命令 ssh hadoop13
7、安装hadoop
(1)进入 /usr/local/目录,解压缩文件hadoop-2.2.0-64bit.tar.gz
执行命令 tar -zxvf hadoop-2.2.0-64bit.tar.gz
(2)重命名hadoop-2.2.0为hadoop
执行命令 mv hadoop-2.2.0 hadoop
(3)配置环境变量,修改文件/etc/profile,添加hadoop的bin路径和sbin路径
修改的内容如下
export JAVA_HOME =/usr/local/jdk
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
(4) 让配置立即生效
执行命令 source /etc/profile
(5) 修改/usr/local/hadoop/etc/hadoop目录下的六个文件夹
①修改hadoop-env.sh,这个文件只是修改JAVA_HOME的路径
即export JAVA_HOME=/usr/local/jdk
②修改core-site.xml文件,修改的内容如下
<configuration>
<!-- 指定HDFS的地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop13:9000</value>
</property>
<!-- 指定Hadoop的临时文件-->
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
</property>
<!-- 指定文件缓冲区的大小-->
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<!-- 配置可以访问的用户名-->
<property>
<name>hadoop.proxyuser.local.hosts</name>
<value>*</value>
</property>
<!-- 配置可以访问的组-->
<property>
<name>hadoop.proxyuser.local.groups</name>
<value>*</value>
</property>
</configuration>
③修改hdfs-site.xml文件,修改的内容如下
<configuration>
<!--分布式文件系统中的文件冗余数-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!--配置secondNameNode的地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop13:9001</value>
</property>
<!--设置namenode存储的位置-->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/dfs/name</value>
</property>
<!--设置datanode存储的位置-->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/dfs/data</value>
</property>
<!--设置是否可以用网页来查看hdfs系统-->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
④把mapred-site.xml.template重命名为mapred-site.xml,然后修改里面的内容如下:
<configuration>
<!--设置用yarn来运行mapreduce程序-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!--mapreduce中job的地址-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop13:10020</value>
</property>
<!--网页jobhistory的地址-->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop13:19888</value>
</property>
</configuration>
⑤修改yarn-site.xml文件,修改的内容如下
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- reducer取数据的方式是mapreduce_shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- shuffle的类路径 -->
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<!-- resourcemanager的地址 -->
<property>
<name>yarn.resourcemanager.address</name>
<value>hadoop13:8032</value>
</property>
<!-- scheduler的地址 -->
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hadoop13:8030</value>
</property>
<!-- resource-tracker的地址 -->
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hadoop13:8035</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>hadoop13:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hadoop2:8088</value>
</property>
</configuration>
⑥修改slaves文件,这里主要就是datanode的地址,因为配置的是单节点的,所以可以把本机的ip放进去,如果没有的话,将不能存储数据,
添加的内容如下:
hadoop13
执行vi slaves
8、格式化分布式文件系统
执行命令 hdfs namenode -format(hadoop namenode -format已经过时了)
9、启动hadoop
执行命令 start-all.sh
可以先启动start-dfs.sh ,然后启动start-yarn.sh
10、查看是否启动成功
执行命令 jps,如果出现如下图所示的几个进程,则说明启动成功
总结:
1、安装jdk的时候一定要选择与linux系统相匹配的版本进行安装;
(1)查看linux是多少位的命令如下:
getconf LONG_BIT
也可以通过uname -a
如上图所示,没有出现64bit,所以他是32位的系统
(2)查看jdk是32位还是64位
执行命令 java -version
如上图,没有出现64bit,所以jdk是32位的
2、如果你使用的jdk版本是1.7,则会出现以下的错误
M: ssh: Could not resolve hostname VM: Nameor service not known
Client: ssh: Could not resolve hostnameClient: Name or service not known
warning:: ssh: Could not resolve hostnamewarning:: Name or service not known
library: ssh: Could not resolve hostnamelibrary: Name or service not known
Java: ssh: Could not resolve hostname Java:Name or service not known
have: ssh: Could not resolve hostname have:Name or service not known
loaded: ssh: Could not resolve hostnameloaded: Name or service not known
You: ssh: Could not resolve hostname You:Name or service not known
have: ssh: Could not resolve hostname have:Name or service not known
might: ssh: Could not resolve hostnamemight: Name or service not known
which: ssh: Could not resolve hostnamewhich: Name or service not known
解决的办法:
(1)/etc/profile文件夹中添加一些额外的环境变量:如以下所示
export JAVA_HOME=/usr/local/jdk
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$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)上述问题还可能是由于/usr/local/hadoop/etc/hadoop/slaves里面配置的域名引起的,因为所配置的域名找不到与之对应的ip(默认的配置是localhost,即默认的存储数据的节点只有本地)
3、 如何添加多个datanode节点
Datanode节点主要是在/usr/local/hadoop/etc/hadoop/slaves里面配置的,在该文件可以配置datanode的域名或者ip地址,然后把/usr/local/hadoop整个文件夹发给各个datanode,然后再配置相关的环境变量,在启动hadoop之前,确保datanode节点是出于开机状态,这样才可以存储数据