Hadoop分布式安装指导
版本描述
系统版本为centos 6.5 64 bit
Hadoop版本:hadoop 2.4.0 64bit 版本
说明:apache社区上发布的是32位的编译版本,直接安装在64位上会出现库的问题
至于如何获取64位的版本,可以自己编译也可以从网上获取
网络规划
本文安装的系统是centos,这个安装规划了一个namenode和一个datanode,安装多贵datanode和一个datanode是一样的。
hostname | ip | |
master | namenode | 10.20.96.217 |
slave | Datanode1 | 10.20.96.246 |
用户创建
用户创建
用root用户登录,在所有节点上创建用户,用户名为tanxian ,密码:tanxian(这是用我的名字创建的,当然是可以修改的)
1、创建用户组:groupadd hadoop
2、执行如下命令: useradd tanxian -g hadoop -d /home/tanxian
3、用户建立好,在设置密码
执行如下命令: passwd tanxian
在提示输入密码处输入:tanxian
在提示确认密码处输入:tanxian
修改主机名
依次修改每台机器 /etc/hosts文件和机器名。
10.20.96.217 namenode
10.20.96.246 datanode1
如果是分布式部署一定要配置这个,master的hdfs上就认这个
建立信任关系
建立namenode节点和所有datanode节点之间的双向信任关系
建立namenode到datanode的信任关系
1、用户tanxian用户登录到namnenode节点,在/home/tanxian目录下检查是否有.ssh目录,如果没有就手动建立
建立目录执行如下命令:mkdir .ssh
2、创建密钥
执行如下命令:ssh-keygen -t rsa
持续回车确认,完成后在 .ssh目录下会产生如下两个文件 :id_rsa(私钥文件) id_rsa.pub(公钥文件)
3、用tanxian用户登录到datanode1节点,进入到/home/tanxian目录下,在/home/tanxian目录下检查是否有.ssh目录,如果没有就手动建立
建立目录执行如下命令:mkdir .ssh
4、进入 .ssh目录看是否有authorized_keys,如果没有建立这个文件
执行如下命令:touch authorized_keys
5、把namenode节点中/home/hadoop/.ssh/id_rsa.pub中的内容copy到datanode节点中的/home/hadoop/.ssh/authorized_keys文件中
执行命令:scp ~/.ssh/id_rsa.pub tanxian@datanode1:~/
6、用用户tanxian登录到datanode1上,在其home目录下执行如下命令,把公钥添加到鉴权文件中
cat id_rsa.pub > ./.ssh/authorized_keys
7、修改文件和文件夹的权限(这部是个坑,如果权限设置不对,信任关系就不能生效)
设置 .ssh 文件夹权限为chmod 700 .ssh
设置文件权限:chmod 600 authorized_keys
这样namenode到datanode的信任关系就建立好
8、测试是否建立完成
输入命令ssh tanxian@datanode1
敲回车直接过去,不用输入密码就表示建立好了。
建立datanode到namenode信任关系
重复上面的步骤,只不过对namenode节点换为datanode节点,datanode节点换为namenode节点
建立节点自己对自己的信任关系
Namenode节点和datanode节点都需要,把自己的id_rsa.pub 追加在自己的authorized_keys 中即可
执行命令: cat id_rsa.pub >> authorized_keys
安装jdk
这里就不在描述如何安装jdk了,但是要注意把jdk的JAVA_HOME配置在系统的PATH中
安装hadoop
安装namenode节点
1、把安装包hadoop-2.4.0-64.tar.gz 传到/home/tanxian目录下
2、tar开安装包 ,执行命令:tar -zxvf hadoop-2.4.0-64.tar.gz
执行命令mv hadoop-2.4.0 hadoop
3、配置hadoop的环境变量
A、切换到root用户,进入/etc/profile.d 目录
B、在这个目录下新建文件,执行命令:touch hadoop.sh
C、在文件中写入如下配置数据
HADOOP_HOME=/home/tanxian/hadoop
export HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_LOG_DIR=$HADOOP_HOME/logs
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
export HADOOP_BIN=$HADOOP_HOME/bin
export PATH=$HADOOP_BIN:$PATH
D、切换到hadoop用户使配置生效,执行命令:source /etc/profile
E、执行命令:echo $HADOOP_HOME 如果看见输出为/home/tanxian/ 表示配置成功
4、建立数据存储目录(提示这步需要用root用户)
默认hadoop数据存放在HADOOP_HOME/data目录,需要通过软连接的形式把它链接到空间更大的地方,如果是测试可以不用
A、在大空间位置建立目录mkdir data 进入data目录在执行mkdir hadoop
B、修改文件/data的own,执行命令: chown -R tanxian:hadoop /data
C、建立软连接 执行命令:ln -s /data/hadoop /home/tanxian/hadoop/data
5、配置masters
A、如果没有masters就创建爱masters文件,执行命令:touch masters
B、在文件中写入namenode的hostsname地址,格式如下:namenode
6、配置slaves
在slaves文件中配置datanode的ip地址格式如下
datanode1
10-20-97-配置core-site.xml
添加如下配置
<property>
<name>hadoop.tmp.dir</name>
<value>/home/tanxian/hadoop/tmp</value>
<description>temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://10.20.96.217:9000</value>
<final>true</final>
</property>
7、配置hdfs-site.xml
添加如下配置
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>10.20.96.217:50090</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/tanxian/hadoop/data/dfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/tanxian/hadoop/data/data</value>
<final>true</final>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
8、配置mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>10.20.96.217:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>10.20.96.217:19888</value>
</property>
<property>
<name>mapreduce.jobhistory.intermediate-done-dir</name>
<value>/mr-history/tmp</value>
</property>
<property>
<name>mapreduce.jobhistory.done-dir</name>
<value>/mr-history/done</value>
</property>
9、配置yarn-site.xml
<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.nodemanager.local-dirs</name>
<value>/home/tanxian/hadoop/data</value>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>/home/tanxian/hadoop/logs</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir-suffix</name>
<value>logs</value>
</property>
<property>
<name>yarn.log-aggregation.retain-check-interval-seconds</name>
<value>-1</value>
</property>
<property>
<name>yarn.nodemanager.log.retain-seconds</name>
<value>10800</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>10.20.96.217:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>10.20.96.217:8031</value>
</property>
<property>
<name> yarn.resourcemanager.address</name>
<value>10.20.96.217:8032</value>
</property>
<property>
<name> yarn.resourcemanager.admin.address</name>
<value>10.20.96.217:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>10.20.96.217:8088</value>
</property>
这样namenode节点安装完成
安装datanode节点
1、配置hadoop的环境变量
配置操作同上
2、建立数据存储目录
配置操作同上
3、把namenode上的hadoop打包copy到datanode节点上的/home/tanxian目录下
4、把包tar开
格式化 hdfs
配置好后在namenode机器上进入hadoop的bin目录格式化文件系统(一定要)
hdfs namenode -format #格式化文件系统
启动hadoop
进入namenode节点的$HADOOP_HOME/sbin 目录
下执行 ./start-all.sh
他会把所有的节点启动起来,包括namenode和datanode1
在namenode上执行jps命令发现如下
表示namenode节点正常启动
在datanode1上执行jps命令发现如下
表示datanode1启动正常
问题1:"Not implemented by the DistributedFileSystem FileSystem implementation"
包中的DistributedFileSystem 冲突导致hadoop-core-1.2.1和hadoop-common-2.4.0有相同的内导致,删除hadoop-core-1.2.1即可
问题2: 格式化文件系统的时候抛出ERROR security.UserGroupInformation: PriviledgedActionException as:tanxian (auth:SIMPLE) cause:org.apache.hadoop.hdfs.server.common.IncorrectVersionException: Unexpected version of data node. Reported: -55. Expecting = -47.
原因是namenode和datanode版本不一致导致