linux下hadoop安装
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统( Distributed File System),其中一个组件是HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算
准备
-
jdk安装
[jdes@wangjing jdes]$ java -version java version "1.8.0_121" Java(TM) SE Runtime Environment (build 1.8.0_121-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
-
hadoop下载
[jdes@wangjing jdes]$ cd /home/jdes/ 下载 [jdes@wangjing jdes]$ tar zxvf hadoop-2.7.1.tar.gz #解压
配置hadoop环境变量
编辑profile
[jdes@wangjing jdes]$ vim /etc/profile
在最下面配置环境变量
export HADOOP_HOME=/home/jdes/hadoop-2.7.1
export PATH=$HADOOP_HOME/bin:$PATH
配置核心组件文件
Hadhoop核心文件core-site.xml
[jdes@wangjing jdes]$ cd hadoop-2.7.1/etc/hadoop/
[jdes@wangjing hadoop]$ ls
capacity-scheduler.xml httpfs-env.sh mapred-env.sh
configuration.xsl httpfs-log4j.properties mapred-queues.xml.template
container-executor.cfg httpfs-signature.secret mapred-site.xml.template
core-site.xml httpfs-site.xml slaves
hadoop-env.cmd kms-acls.xml ssl-client.xml.example
hadoop-env.sh kms-env.sh ssl-server.xml.example
hadoop-metrics2.properties kms-log4j.properties yarn-env.cmd
hadoop-metrics.properties kms-site.xml yarn-env.sh
hadoop-policy.xml log4j.properties yarn-site.xml
hdfs-site.xml mapred-env.cmd
[jdes@wangjing hadoop]$ vim core-site.xml
在configruation中加入
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/hadoopdata</value>
</property>
配置HDFS
Hadoop的HDFS是文件系统,配置文件hdfs-site.xml
[jdes@wangjing hadoop]$ vim hdfs-site.xml
在configruation中加入
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
配置站点文件
Hadoop的站点配置是yarn-site.xml
[jdes@wangjing hadoop]$ vim yarn-site.xml
在configruation中加入
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>localhost:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>localhost:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>localhost:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>localhost:18141</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>localhost:18088</value>
</property>
配置MapReduce
MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算
配置文件为mapred-site.xml
**注意:**这里要修改一下mapred-site.xml.template
重命名为 mapred-site.xml
[jdes@wangjing hadoop]$ mv mapred-site.xml.template mapred-site.xml
[jdes@wangjing hadoop]$ vim mapred-site.xml
在configruation中加入
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
格式化文件系统
[jdes@wangjing hadoop]$ cd /home/jdes/hadoop-2.7.1/sbin/
[jdes@wangjing sbin]$ hadoop namenode -format
启动
执行启动文件 start-all.sh 每一步都要输入一遍对应ip的密码,我们这里是单机部署,直接都输入本机密码就行
[jdes@wangjing sbin]$ ./start-all.sh
This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
Starting namenodes on [localhost]
root@localhost's password:
localhost: starting namenode, logging to /home/jdes/hadoop-2.7.1/logs/hadoop-root-namenode-wangjing.out
root@localhost's password:
localhost: starting datanode, logging to /home/jdes/hadoop-2.7.1/logs/hadoop-root-datanode-wangjing.out
Starting secondary namenodes [0.0.0.0]
root@0.0.0.0's password:
0.0.0.0: starting secondarynamenode, logging to /home/jdes/hadoop-2.7.1/logs/hadoop-root-secondarynamenode-wangjing.out
starting yarn daemons
starting resourcemanager, logging to /home/jdes/hadoop-2.7.1/logs/yarn-root-resourcemanager-wangjing.out
root@localhost's password:
localhost: starting nodemanager, logging to /home/jdes/hadoop-2.7.1/logs/yarn-root-nodemanager-wangjing.out
检查程序是否运行成功
[jdes@wangjing sbin]$ jps #查看java进程
3841 DataNode
4002 SecondaryNameNode
3715 NameNode
4148 ResourceManager
4436 NodeManager
以上5个都启动成功就完成启动了
最后访问localhost:50070
启动成功!!!
补充
可能出现的问题:
-
linux安装Hadoop出现找不到java环境变量
在安装启动hadoop时候遇到了找不到java环境变量的,但是我执行java -version时候返回了jdk信息,说明环境变量配置了
[jdes@wangjing ~]$ java -version java version "1.8.0_121" Java(TM) SE Runtime Environment (build 1.8.0_121-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
然后我执行env也发现了java的环境变量
[jdes@wangjing sbin]$ env JAVA_HOME=/usr/java/jdk1.8.0_121 S_COLORS=auto CLASSPATH=.:/usr/java/jdk1.8.0_121/lib/dt.jar:/usr/java/jdk1.8.0_121/lib/tools.jar XDG_SESSION_ID=7 USER=root PWD=/home/jdes/hadoop-2.7.1/sbin HOME=/root PATH=.:/usr/java/jdk1.8.0_121/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
然后我启动hadoop他还是爆出找不到javahome
[jdes@wangjing sbin]$ ./start-dfs.sh Error: JAVA_HOME is not set and could not be found.
于是我去了解了下情况
网上说修改profile文件或者是.bash_profile或者.bashcr文件,修改前两者刷新
[jdes@wangjing etc]$ source profile [jdes@wangjing ~]$ source .bash_profile
启动还是找不到javahome
但是我修改.bashcr并刷新之后能启动成功了
因为(下面这段话引用别人的)
.bashrc文件会在bash shell调用另一个bash shell时读取,也就是在shell中再键入bash命令启动一个新shell时就会去读该文件。这样可有效分离登录和子shell所需的环境。但一般 来说都会在.bash_profile里调用.bashrc脚本以便统一配置用户环境
所以报出找不到javahome的原因应该就是启动文件start-dfs.sh 中调用了另一个bash shell导致环境变量读取位置发生改变从而读取失败
详细了解这三个文件参考这篇博客:
Linux中profile、bashrc、bash_profile之间的区别和联系
注意:
- .bashcr和.bash_profile都在用户当前用户文件夹下也就是’~'下
- 上文中说的修改就是添加环境变量
export JAVA_HOME=/usr/java/jdk1.8.0_121 export PATH=.:$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
-
端口号被占用
启动的时候可能出现端口号被占用
执行命令关闭端口(端口号举例)
[jdes@wangjing ~]$ netstat -anp |grep 3039 #查看端口号是否被占用 [jdes@wangjing ~]$ kill -9 3039 #直接杀掉进程重新启动就好
-
最后如果你用的阿里云服务器记得要开安全组的端口号
-
如果用的虚拟机请自己关防火墙