hadoop 安装和部署
安装目标目录: /usr/local/hadoop
HDFS数据,Log,临时数据目录:/var/local/hadoop/
hadoop 用户: hadoop
JDK:1.6 版本
一,建立用户hadoop
大部情况下可以直接在root用户下安装,在此处特意建立以hadoop为用户名进行相关操作
>useradd hadoop
#建立hadoop用户
>passwd hadoop #修改密码
>passwd hadoop #修改密码
二,安装JDK。
建议切换到root 用户下面安装JDK,如下图:
>su root
#切换至root用户
>cd software #进入安装的软件目录
>chmod u +x jdk - 6u25 -linux -x64 -rpm.bin #给*.bin增加可执行权限
>. /jdk - 6u25 -linux -x64 -rpm.bin #回车,安装开始。
>cd software #进入安装的软件目录
>chmod u +x jdk - 6u25 -linux -x64 -rpm.bin #给*.bin增加可执行权限
>. /jdk - 6u25 -linux -x64 -rpm.bin #回车,安装开始。
JDK安装完成,并且检查安装是否成功。
>java
--versiov
java version "1.6.0_17"
OpenJDK Runtime Environment (IcedTea6 1. 7. 4) (rhel - 1. 21.b17.el6 -x86_64)
OpenJDK 64 -Bit Server VM (build 14. 0 -b16, mixed mode)
java version "1.6.0_17"
OpenJDK Runtime Environment (IcedTea6 1. 7. 4) (rhel - 1. 21.b17.el6 -x86_64)
OpenJDK 64 -Bit Server VM (build 14. 0 -b16, mixed mode)
某些情况下,需要手工配置全局的JAVA运行环境,即在/etc/profile中进行配置。
有时候由于产线或者系统中部署了多个JDK版本,则可以通过~/.bashrc或者~/.bashprofile用来对当前用户的JDK环境指定。
关于profile,bashrc等启动顺序,可以自行复习Linux启动脚本顺序。
如下图中,主要在/etc/profile中进行全局配置。
>cd /usr #进入/usr目录,大部分情况下java都安装在/usr下面子目录
>find -name java #查找java安装路径
. /java /jdk1. 6.0_25 /jre /bin /java
. /java /jdk1. 6.0_25 /bin /java
>cd /etc #进入/etc目录
>vim profile #编辑/etc/profile
在/etc/profile 文件尾追加写入如下内容:
JAVA_HOME = /usr /java /jdk1. 6.0_25
HADOOP_HOME = /usr /local /hadoop
HADOOP_CONF_DIR =$HADOOP_HOME /conf
CLASSPATH =. :$JAVA_HOME /lib :$HADOOP_HOME /lib
PATH =$PATH :$JAVA_HOME /bin :$JAVA_HOME /jre /bin :$HADOOP_HOME /bin
export JAVA_HOME
export HADOOP_HOME
export HADOOP_CONF_DIR
让环境变量生效,如下图执行:
source
/etc
/profile
三,设置ssh
配置本机ssh,使得使用hadoop用户ssh登陆时不需要提供密码验证,对于伪分布式的hadoop部署之需要设置如下信息,则基本ssh配制成功。
>su hadoop
#切换到hadoop用户
>ssh -keygen -t dsa -P '' -f ~ /.ssh /id_dsa #初始化ssh 验证信息
> cat ~ /.ssh /id_dsa.pub >> ~ /.ssh /authorized_keys #追加验证信息到authorized_keys文件
>chmod 700 ~ /.ssh
>chmod 600 ~ /.ssh /authorized_keys
>ssh localhost #测试本机主机名不需要验证就可以登录则成功
>ssh -keygen -t dsa -P '' -f ~ /.ssh /id_dsa #初始化ssh 验证信息
> cat ~ /.ssh /id_dsa.pub >> ~ /.ssh /authorized_keys #追加验证信息到authorized_keys文件
>chmod 700 ~ /.ssh
>chmod 600 ~ /.ssh /authorized_keys
>ssh localhost #测试本机主机名不需要验证就可以登录则成功
如果配置多台机器的cluster完整分布式集群,例如:
10.
16.
45.
209 s1
10. 16. 45. 226 s2
10. 16. 45. 227 s3
10. 16. 45. 231 s4
10. 16. 45. 226 s2
10. 16. 45. 227 s3
10. 16. 45. 231 s4
使用如下命令操作加入主机名和IP映射
>su root
>vim /etc /hosts
>vim /etc /hosts
更新类似如下内容:
10.
16.
45.
209 s1
# Added by NetworkManager
127. 0. 0. 1 localhost.localdomain localhost
: : 1 sstrtst20.buyabs.corp sstrtst20 localhost6.localdomain6 localhost6
10. 16. 45. 226 s2
10. 16. 45. 227 s3
10. 16. 45. 231 s4
127. 0. 0. 1 localhost.localdomain localhost
: : 1 sstrtst20.buyabs.corp sstrtst20 localhost6.localdomain6 localhost6
10. 16. 45. 226 s2
10. 16. 45. 227 s3
10. 16. 45. 231 s4
分布式SSH设置如下图,ssh登录10.16.45.209:
>su hadoop
#切换到hadoop用户
>ssh -keygen -t dsa -P '' -f ~ /.ssh /id_dsa #初始化ssh 验证信息
> cat ~ /.ssh /id_dsa.pub >> ~ /.ssh /authorized_keys #追加验证信息到authorized_keys文件
>chmod 700 ~ /.ssh
>chmod 600 ~ /.ssh /authorized_keys
>ssh s1 #测试当前主机不需要验证既可登录
>scp ~ /.ssh /id_dsa.pub 10. 16. 45. 226 : /home /hadoop /.ssh /
>ssh 10. 16.45.226
>su hadoop
> cat ~ /.ssh /id_dsa.pub >> ~ /.ssh /authorized_keys #追加验证信息到authorized_keys文件
>ssh s1 #测试
依次将sstrtst20的~/.ssh/id_dsa.pub拷贝到其他ip地址并且追加到authorized_keys文件。
>ssh -keygen -t dsa -P '' -f ~ /.ssh /id_dsa #初始化ssh 验证信息
> cat ~ /.ssh /id_dsa.pub >> ~ /.ssh /authorized_keys #追加验证信息到authorized_keys文件
>chmod 700 ~ /.ssh
>chmod 600 ~ /.ssh /authorized_keys
>ssh s1 #测试当前主机不需要验证既可登录
>scp ~ /.ssh /id_dsa.pub 10. 16. 45. 226 : /home /hadoop /.ssh /
>ssh 10. 16.45.226
>su hadoop
> cat ~ /.ssh /id_dsa.pub >> ~ /.ssh /authorized_keys #追加验证信息到authorized_keys文件
>ssh s1 #测试
四,安装配置hadoop
解压缩安装包并且进行相关配置,如下图:
>su root
>tar xzvf hadoop - 0. 20. 2 -cdh3u1.tar.gz #解压缩
> mv hadoop - 0. 20. 2 -cdh3u1 hadoop #改名
> mv hadoop /usr /local #移动文件
>chown -R hadoop :hadoop /usr /local /hadoop #修改/usr/local/hadoop 目录以及目录内容数据hadoop:hadoop用户/用户组
>cd /usr /local /hadoop /conf
>vim hadoop -env.sh
>tar xzvf hadoop - 0. 20. 2 -cdh3u1.tar.gz #解压缩
> mv hadoop - 0. 20. 2 -cdh3u1 hadoop #改名
> mv hadoop /usr /local #移动文件
>chown -R hadoop :hadoop /usr /local /hadoop #修改/usr/local/hadoop 目录以及目录内容数据hadoop:hadoop用户/用户组
>cd /usr /local /hadoop /conf
>vim hadoop -env.sh
设置hadoop-env.sh内容:
export JAVA_HOME
=$JAVA_HOME
export HADOOP_CLASSPATH = "$HADOOP_CLASSPATH"
export HADOOP_HEAPSIZE = 2048
export HADOOP_LOG_DIR = /var /local /logs
export HADOOP_PID_DIR = /var /local /pids
export HADOOP_CLASSPATH = "$HADOOP_CLASSPATH"
export HADOOP_HEAPSIZE = 2048
export HADOOP_LOG_DIR = /var /local /logs
export HADOOP_PID_DIR = /var /local /pids
设置masters内容
s1
设置slaves内容
s1
s2
s3
s4
s2
s3
s4
设置hdfs-site.xml内容
<configuration
>
<property >
<name >dfs.permissions < /name >
<value >false < /value >
< /property >
<property >
<name >dfs.name.dir < /name >
<value > /var /local /hadoop /cache /hadoop /dfs /name < /value >
< /property >
< /configuration >
<property >
<name >dfs.permissions < /name >
<value >false < /value >
< /property >
<property >
<name >dfs.name.dir < /name >
<value > /var /local /hadoop /cache /hadoop /dfs /name < /value >
< /property >
< /configuration >
设置mapred-site.xml内容
<configuration
>
<property >
<name >mapred.job.tracker < /name >
<value >s1 : 8021 < /value >
< /property >
< /configuration >
<property >
<name >mapred.job.tracker < /name >
<value >s1 : 8021 < /value >
< /property >
< /configuration >
设置core-site.xml内容
<configuration
>
<property >
<name >fs.default.name < /name >
<value >hdfs : / /s2 : 8020 < /value >
< /property >
<property >
<name >hadoop.tmp.dir < /name >
<value > /var /local /hadoop /cache /${user.name} < /value >
< /property >
<property >
<name >webinterface.private.actions < /name >
<value >true < /value >
< /property >
< /configuration >
<property >
<name >fs.default.name < /name >
<value >hdfs : / /s2 : 8020 < /value >
< /property >
<property >
<name >hadoop.tmp.dir < /name >
<value > /var /local /hadoop /cache /${user.name} < /value >
< /property >
<property >
<name >webinterface.private.actions < /name >
<value >true < /value >
< /property >
< /configuration >
设置log4j,请自行配置。
依次将hadoop-env.sh,core-site.xml,hdfs-site.xml,mapred-site.xml,masters,slaves文件分发到其它hadoop node
五,创建hadoop 数据,log,pids目录
创建hadoop log,pid,hadoop目录并且设置操作权限,如下:
>su root
>mkdir /var /local
>mkdir /var /local /hadoop
>mkdir /var /local /logs
>mkdir /var /local /pids
>cd /var /local
>chown -R hadoop :hadoop *
>chmod ugo +rw *
>mkdir /var /local
>mkdir /var /local /hadoop
>mkdir /var /local /logs
>mkdir /var /local /pids
>cd /var /local
>chown -R hadoop :hadoop *
>chmod ugo +rw *
六,启动准备
>su hadoop
>hadoop namenode -format #格式化HDFS数据存储
>cd /usr /local /hadoop /bin #必须在namenode 上启动
>sh start -all.sh #启动
>hadoop fs - ls / #测试
>hadoop fs -put demo.txt /user /hadoop /demo.txt #向HDFS上传demo.txt并且存储在/user/hadoop/demo.txt
>hadoop fs - cat /user /hadoop /demo.txt #打印
>hadoop namenode -format #格式化HDFS数据存储
>cd /usr /local /hadoop /bin #必须在namenode 上启动
>sh start -all.sh #启动
>hadoop fs - ls / #测试
>hadoop fs -put demo.txt /user /hadoop /demo.txt #向HDFS上传demo.txt并且存储在/user/hadoop/demo.txt
>hadoop fs - cat /user /hadoop /demo.txt #打印
七,系统自动启动
利用CentOS chkconfig,在/etc/init.d/ 中创建start,stop,restart脚本,利用chkconfig --add 加入服务,利用chkconfig --level on 设置启动级别。
八,观察hadoop 运行进程
在namenode上观察:
>jps
14520 NameNode
15005 TaskTracker
14641 DataNode
14881 JobTracker
7647 Jps
14790 SecondaryNameNode
14520 NameNode
15005 TaskTracker
14641 DataNode
14881 JobTracker
7647 Jps
14790 SecondaryNameNode
在datanode上观察:
>jps
3462 TaskTracker
16687 Jps
3349 DataNode
3462 TaskTracker
16687 Jps
3349 DataNode