1.什么是hadoop,通俗的讲hadoop就是将数据进行分布处理的框架。
2.Hadoop集群中运行的守护进程共有5类:
- NameNode
- DataNode
- Secondary NameNode
- JobTracker
- TaskTracker
3.Hadoop集群中的机器(节点)分为2类:主节点和从节点,NameNode、JobTracker所在节点为主节点(负责管理),DataNode和TaskTracker所在节点为从节点(负责干活儿)。
安装Hadoop
在安装Hadoop之前需要先安装如下软件:
- JDK
- ssh
- sshd
- ssh-kengen
我用的是Ubuntu16.04,已经预装了ssh和ssh-kengen了,只需要安装jdk和sshd,可以通过执行命令which
命令来检查是否安装了某软件,如which sshd
安装JDK8
下载压缩包解压即可:sudo mkdir /usr/local/lib/jvm
sudo tar -zxv -f ~/setupFiles/jdk-8u101-linux-x64.tar.gz -C /usr/local/lib/jvm
配置环境变量:
修改 /etc/profile文件,追加:export JAVA_HOME=/usr/local/lib/jvm/jdk1.8.0_101 export PATH=$JAVA_HOME/bin:$PATH
配置完毕后执行命令source /etc/profile
,此刻通过echo $JAVA_HOME
应该能看到刚才设置的了。
安装sshd
sudo apt install openssh-server
安装完了sshd后应该可以通过ssh lcoalhost
命令远程访问了,但是需要输入密码,Hadoop集群节点间要进行通信需要配置为无密码登录方式。
无密码ssh登录设置
执行如下命令:
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
其中,执行ssh-keygen
命令时一路回车不要输入密码,执行完毕后会在/home/userName/.ssh路径下生成公钥和私钥id_rsa和id_rsa.pub。如果一切顺利的话,现在可以通过ssh localhost
无密码登录了
安装Hadoop
我下载的是1.0.4版本(2.X版本和1.X版本有着很大的差别,还是先学会1.X再看2.X吧,我们的课程也是以1.X为例的,事实上我刚才下的2.X,发现很多东西不懂,又退回1.X了,:-)),先把下载下来的压缩包解压到~/wiley/hadoop(其实最好放按照Linux的习惯放到/usr/local下,然后把hadoop目录及里面的文件所属用户和所属组改成当前用户和当前用户所属组)
解压后配置文件conf/hadoop-env.sh文件中的JAVA_HOME,反注释如下行# export JAVA_HOME=/usr/lib/j2sdk1.5-sun
,并且设置为相应的Java所在路径。
Hadoop可以在三种模式下工作:
- 单节点模式
- 伪分布式模式
- 分布式模式
工作环境下是分布式模式,开发环境下可以使用单节点模式或伪分布式模式,方便调试。解压后不做配置就是单节点模式,而伪分布式模式意思是指集群中的各个节点实际配置为同一台机器。下面的步骤用来配置伪分布式模式:
配置conf/hadoop-env.sh
反注释并修改JAVA_HOME:
export JAVA_HOME=/usr/local/lib/jvm/jdk1.8.0_101
配置conf/core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/joey/wiley/hadoop/hadoop_temp/</value>
<description>http://stackoverflow.com/questions/2354525/what-should-be-hadoop-tmp-dir</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
<description>NameNode守护进程所在机器和端口</description>
</property>
</configuration>
配置conf/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>HDFS的默认副本数,由于是伪分布式模式,所以设置为1</description>
</property>
</configuration>
配置conf/mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
<description>JobTracker守护进程所在机器及端口</description>
</property>
</configuration>
启动Hadoop
在启动之前先格式和HDFS文件系统:cd ~/wiley/hadoop/bin ./hadoop namenode -format
然后启动Hadoop:./start-all.sh
,如果一切顺利的话用jps
命令查看会有5个进程(不包括jps本身):