一、配置Hadoop
1.为要执行hadoop的机器配置无需密码ssh登录
在每台机器上建立一个叫hadoop的用户,在namenode的机器上使用hadoop用户执行ssh-keygen -t rsa的命令生成一个公钥和密钥,将公钥id_rsa.pub复制成authorized_keys(公钥和密钥的文件在hadoop家目录中的.ssh文件夹下)将authorized_keys文件复制到其他datanode机器上的hadoop用户家目录的.ssh文件夹下如果没油这个文件夹可以建立一个,一般网上资料说要把要将/etc/ssh/sshd_confing文件下的RSAAuthentication 和PubkeyAuthentication中的这两个参数改成yes但是在我的实践中不需要改东任何参数就可以。
在使用时有时我们使用过一段时间会ssh不能无密码登录了这时候我们可以在namenode和datanode不能登录的那台datanode 中的hadoop用户删除在重新建立该用户记住杂删除用户的时候要不.ssh文件夹下的文件也同时删除在将namenode 机器上的authorized_keys文件重新拷贝到.ssh文件夹下一般就可以了要是还不可以就只能将namenode 中的hadoop用户删除重新建立公钥和密钥在重新做一遍连接
因为一般我们要把namenode 和SecondaryNameNode分在两台机器上一般我们也要将我们也要在SecondaryNameNode机器上生成公钥和密钥把这台机器的id_rsa.pub追加到这台机器的authorized_keys中使用的命令是cat id_rsa.pub >> authorized_keys再将authorized_keys复制到其他机器中。
2.配置所有运行hadoop的java环境
在配置之前我们要先安装jdk查看jdk版本在这里我所安装的是1.8.0_25版本
在机器的/etc/profile文件中配置
export JAVA_HOME="/usr/java/jdk1.8.0_25/"
export JAVA_HOME="/usr/java/jdk1.8.0_25/jre"
export CLASSPATH=:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
配置完成之后使用source /etc/profile命令是配置生成这样可以不用重启就可以生效。
3.现在就到了hadoop的配置了
在hadoop安装目录下的conf文件夹我们一般修改core-site.xml hadoop-env.sh hdfs-site.xml masters slaves这5个文件
这些配置网上有许多参考我们可以安装上边说的进行配置就可以了我们的这些配置一般都是在namenode 机器上进行的配置好之后我们就可以把hadoop目录复制到其他datanode机器上复制完成之后我们就可以在namenode 机器上格式化命令是 hadoop namenode -format 格式化成功之后就可以启动hadoop集群
一般在这个时候会在格式化的时候出现错误一般都是我们在格式化之前建立了dfs.name.dir和或dfs.data.dir参数所设置的文件夹所有一般我们在格式化之前不建立参数所设置的文件夹格式化之后会在动建立这些文件夹。一般这样就不会出现错误了,在启动时就可以了。
core-site.xml 中的fs.default.name参数是配置namenode的标识及端口号
hadoop.tmp.dir参数是配置namenode上hadoop临时文件夹
fs.checkpoint.size参数是配置存储块的大小
hdfs-site.xml中的dfs.name.dir参数是配置namenode上的hdfs空间
dfs.data.dir参数是配置datanode上数据块的存储位置
dfs.replication参数是配置副本个数要小于datanode的个数 hadoop-env.sh 配置你的java路径
masters 配置的是SecondaryNameNode的机器ip地址
slaves配置的是dataname的ip地址
二、经常出现的错误
1、namenode启动不了
解决方法:经namenode 机器上的data数据删除格式化在重新启动。
2、datanode启动不了
解决方法:在namenode上删除data数据如果不知道是那个文件夹可以在hdfs-site.xml文件的配置参数中找到是那个文件夹,删除相关的文件夹在格式化启动服务(前提无论在删除文件还是修改文件都要在之前关闭所有服务在我做的时候经常关闭不全所有服务的进程 这时候我们可以使java工具/usr/java/java*/bin/jps或ps aux|grep hadoop命令查看是否还有进程在运行如果还有没有关闭的hadoop进程我们就kill掉那些进程)这样就可以了。
如果还是不行那我们就要把datanode上的data也要删除在重新启动。
三、注意
1.单独启动datanode :start-dfs.sh
2.作为namenode的机器必须在/etc/hosts文件中加入所有hadoop集群机器的ip地址和对应的主机名
3.作为datanode的机器则要在/etc/hosts文件中加入本机的ip地址和主机名以及namenode的ip地址和主机名。
4.如果我们想在运行hadoop命令的时候不用每次都要进入bin目录中才能运行我们就需要把hadoop的环境配置到/etc/profile中
#set hadoop path
export HADOOP_HOME=/home/hadoop/hadoopinstall/hadoop-0.20.2
export PATH=$HADOOP_HOME/bin:$PATH
这样就不用每次都要进入bin目录了