hadoop
- 广义:以Hadoop软件为主的生态圈
- 狭义:Hadoop软件
- hadoop.apache.org hive.apache.org spark.apache.org flink.apache.org
- 生产上一般用Hadoop2.x 版本(因为考虑到很多软件在一起用的兼容性,所以不用最新的3.x的版本)
- hadoop2.x组件:
hdfs: 存储 分布式文件系统 底层 生产(将sql上的数据同步到hdfs中)
hive/hbase 都依赖于hdfs,hdfs是底层存储
mapreduce: 分布式计算 (开发难度高、计算慢(shuffle 走的是磁盘))
hive sql/spark用来计算
yarn: 资源(内存+core)+作业(job)调度管理系统 生产 - apache hadoop 不选择部署,企业一般选择CDH、Ambari、hdp部署。cloudera公司拿来Apache hadoop-2.6.0源代码,修复bug,新功能,编译为自己的版本cdh5.7.0 。Apache hadoop-2.6.0 ==hadoop-2.6.0-cdh5.7.0
添加sudo权限的无密码访问的hadoop用户
- useradd hadoop (创建新用户)
- cat /etc/sudoers |grep hadoop(查看其权限)
进入官网下载压缩包
- su - hadoop(切换到Hadoop用户)
- mkdir app (创建一个文件夹用来存放压缩包)
3.wget http://archiveprimary.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.7.0.tar.gz(使用这个命令之前应该yum -y install wget(在root环境下)) - tar -xzvf hadoop-2.6.0-cdh5.7.0.tar.gz(将下载的压缩包进行解压,注意看解压后的文件夹的用户及用户组)
- cd hadoop-2.6.0-cdh5.7.0
- (因为Hadoop所需要的Java版本是1.6 1.7的,需要重新下载Java1.7版本,重新配置Java的环境变量)
准备工作
- [hadoop@hadoop002 hadoop-2.6.0-cdh5.7.0]$ cd etc/hadoop(一般环境变量都在etc目录下面)
- vi hadoop-env.sh(按照官网的步骤来)
- export JAVA_HOME=/usr/java/jdk1.7.0_80
export HADOOP_PREFIX=/home/hadoop/app/hadoop-2.6.0-cdh5.7.0(可以通过进入尾行模式:/HADOOP_PREFIX 进行搜索,发现未搜到,所以新建一个) - bin/hadoop
启动
- Local (Standalone) Mode: 单机 没有进程 不用
- Pseudo-Distributed Mode: 伪分布式 1台机器 进程 (学习过程用)
- Fully-Distributed Mode: 分布式 多台机器 进程 生产
配置文件
- [hadoop@hadoop002 hadoop]$vi core-site.xml(配置hdfs文件系统的端口号)
- vi hdfs-site.xml(因为是伪分布式,把副本系数修改为1)
无密码ssh
- cd (回到家目录)
- rm -rf .ssh (删除该文件)
- ssh-keygen -t dsa -P ‘’ -f ~/.ssh/id_dsa
- cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
- cd .ssh
- ll
- chmod 600 authorized_keys(修改.ssh下面的authorized_keys文件的权限,官网中并没有这一步骤,但是这一步骤不执行会出问题)
- ssh hadoop-01(我的虚拟机的名字,可以通过hostname查询)
修改个人的环境变量(不是全局)
- [hadoop@hadoop002 ~]$ vi .bash_profile(是在Hadoop家目录下面执行的,所以修改的是个人的环境变量)
- 个人的环境变量配置如下
export JAVA_HOME=/usr/java/jdk1.7.0_80
export HADOOP_PREFIX=/home/hadoop/app/hadoop-2.6.0-cdh5.7.0
export PATH=$HADOOP_PREFIX/bin:$JAVA_HOME/bin:$PATH
- ssh hadoop-01 (登陆)
- which hdfs(查找命令,看其是否配置成功)
得到内容如下: ~/app/hadoop-2.6.0-cdh5.7.0/bin/hdfs - cd ~/app/hadoop-2.6.0-cdh5.7.0
- bin/hdfs namenode -format
- [hadoop@hadoop002 hadoop-2.6.0-cdh5.7.0]$ sbin/start-dfs.sh
- [hadoop@hadoop002 hadoop-2.6.0-cdh5.7.0]$ jps(查看是否Hadoop的三个进程都起来了)
- 发现少了一个进程,所以进行第二次部署
发现DN进程有问题,重新部署
- [root@hadoop002 tmp]# rm -rf /tmp/hadoop-hadoop(删除在/tmp下的hadoop-hadoop)
- vi slaves (hadoop-01)将里面localcast 改为自己的机器名称hadoop-01
- [hadoop@hadoop002 hadoop]$ cd …/…/
- [hadoop@hadoop002 hadoop-2.6.0-cdh5.7.0]$ bin/hdfs namenode -format(再次格式化)
- [hadoop@hadoop002 hadoop-2.6.0-cdh5.7.0]$ sbin/start-dfs.sh
- [hadoop@hadoop002 hadoop-2.6.0-cdh5.7.0]$jps (包括jps一共四个进程,所以成功安装并启动)
25398 DataNode
26180 Jps
25559 SecondaryNameNode
25280 NameNode - 根据NameNode 的进程号为25280,根据netstat -nlp | grep 25280 查到其端口号为50070
- 此时用windows 的浏览器,输入http://192.168.2.61:50070(自己机器的IP地址加上端口号,可以进入网页)
总结
本次安装由于误删把之前的mysql的全局变量的配置搞没了,后来通过翻自己博客找出了删的全局变量是mysql的,重新配置后问题解决,以后删文件一定要记得备份!!!!!