一.环境配置
jdk1.8
centos7
二.环境搭建
1.安装jdk
这个不用怎么说了吧,可以直接yum安装或者自己下载tar包。yum安装不用配置javahome,但是需要知道javahome位置,因为hadoop是java项目,运行需要jdk环境。通过yum安装查找javahome如下:
$whereis javacjavac: /usr/bin/javac /usr/share/man/man1/javac.1.gz
可以看出结果是两个目录 用ll命令查看这两个目录详情
$ll /usr/bin/javaclrwxrwxrwx. 1 root root 23 8月 7 14:03 /usr/bin/javac -> /etc/alternatives/javac
这个是个软连接 指向/etc/alternatives/javac 继续对这个目录ll直至不在出现软连接为止
$ll /etc/alternatives/javaclrwxrwxrwx. 1 root root 70 8月 7 14:03 /etc/alternatives/javac -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/bin/javac
$ ll /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/bin/javac
-rwxr-xr-x. 1 root root 7424 7月 24 00:34 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/bin/javac
$ ll /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64
总用量 50780 drwxr-xr-x. 2 root root 4096 8月 7 14:03 bin drwxr-xr-x. 10 root root 134 8月 7 14:03 demo drwxr-xr-x. 3 root root 132 8月 7 14:03 include drwxr-xr-x. 4 root root 28 8月 7 14:03 jre drwxr-xr-x. 3 root root 144 8月 7 14:03 lib drwxr-xr-x. 11 root root 162 8月 7 14:03 sample -rw-r--r--. 1 root root 51993150 7月 23 23:59 src.zip drwxr-xr-x. 2 root root 204 8月 7 14:03 tapset看出来这个文件夹就是jdk的安装路径了。
2 centos7 linux用户之间免登陆
a)分别在机器上创建相同的用户,设置密码
b)在a机器上运行ssh-keygen命令生成公钥私钥
c)将a中的公钥id_dsa.pub烤到b机器上,并查看是否有authorized_keys这个文件,如果有追加id_dsa.pub内容在authorized_keys文件中,没有则创建,并将它的权限修改为600(chmod 600 authorized_keys)
d)b中ssh测试是否能,免密连接
a连b亦是同理
3.安装hadoop
前置准备 三台机器ip,主机名分别为
将三台机器/etc/hosts都修改为这种,ip主机名根据实际而定
a) 下载网站,选择合适的版本 http://mirror.bit.edu.cn/apache/hadoop/common/
b)下载好以后解压 tar -zxvf 安装包
c)配置 core-site.xml hdfs-site.xml yarn-site.xml mapred-site.xml 这四个文件hadoop安装包 etc/hadoop/目录下
core文件主要用于配置namenode地址和tmp文件地址
$ vim etc/hadoop/core-site.xmlfs.defaultFS hdfs://master:9000 hadoop.tmp.dir /workhome/hadoop-3.1.0/data/tmp
hdfs用于设置namenode datanode,hdfs备份份数 默认是3
dfs.permissionsdfs权限是否打开 ,通过idea远程操作的时候提示没有权限访问不了 因此设置为false 默认值是true
$ vim etc/hadoop/hdfs-site.xml
dfs.name.dir /workhome/hadoop-3.1.0/hdfs/name namenode上存储hdfs名字空间元数据 dfs.data.dir /workhome/hadoop-3.1.0/hdfs/data datanode上数据块的物理存储位置 dfs.replication 2 dfs.permissions false
mapred设置mapreduce
$ vim etc/hadoop/mapred-site.xml
mapreduce.framework.name yarn mapreduce.jobhistory.address master:10020 mapreduce.jobhistory.webapp.address master:19888 mapred.job.tracker http://master:9001
$ vim etc/hadoop/yarn-site.xml
yarn.nodemanager.aux-services mapreduce_shuffle yarn.nodemanager.aux-services.mapreduce.shuffle.class org.apache.hadoop.mapred.ShuffleHandler yarn.resourcemanager.address master:8032 yarn.resourcemanager.scheduler.address master:8030 yarn.resourcemanager.resource-tracker.address master:8031 yarn.resourcemanager.admin.address master:8033 yarn.resourcemanager.webapp.address master:8088
修改 etc/hadoop/hadoop-env.sh 添加java安装路径
$ vim etc/hadoop/hadoop-env.sh export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64
配置hadoop环境变量
$ vim /etc/profileexport HADOOP_HOME=/workhome/hadoop-3.1.0export PATH=$PATH:$HADOOP_HOME/bin
然后将master这个hadoop完整的复制到其他机器即可
最后在master etc/hadoop下新增workers 将slave机器添加进去 ,以后要是扩展节点 也应该添加到这个里面
e)初始化:
hadoop namenode -format
f) 启动
只需启动master的
hadoop安装路径/sbin/start-all.sh
查看:jps命令 用来查看启动了的java服务
master
slave1
slave2
只需查看到master上有namenode slave上有datanode就代表成功。
g)关闭 /sbin/stop-all.sh脚本
四.遇到的问题以及解决方案
扩展一台机器,重启服务没有datanode
解决方案:清除 core-site.xml中配置的tmp文件夹 以及hdfs-site.xml中配置的datanode和namenode的文件夹 重新格式化namenode