1. 如何在linux下搭建hadoop集群环境 小残's Blog
前期准备
l 两台linux虚拟机(本文使用redhat5,IP分别为 IP1、IP2)
l JDK环境(本文使用jdk1.6,网上很多配置方法,本文省略)
l Hadoop安装包(本文使用Hadoop1.0.4)
搭建目标
210作为主机和节点机,211作为节点机。
搭建步骤
1修改hosts文件
在/etc/hosts中增加:
IP1 hadoop1
IP2 hadoop2
2 实现ssh无密码登陆
2.1 主机(master)无密码本机登陆
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
直接回车,完成后会在 ~/.ssh/ 生成两个文件: id_dsa 和 id_dsa.pub 。
这两个是成对出现,类似钥匙和锁。
再把 id_dsa.pub 追加到授权 key 里面 ( 当前并没有 authorized_key s文件 ) :
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
ssh localhost hostname
还是要输入密码,一般这种情况都是因为目录或文件的权限问题,看看系统日志,确实是权限问题
.ssh下的authorized_keys权限为600,其父目录和祖父目录应为755
2.2 无密码登陆节点机(slave)
slave上执行:
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
生成.ssh目录。
将master上的authorized_keys复制到slave上:
scp authorized_keys hadoop2:~/.ssh/
实验:在master上执行
ssh hadoop2
实现无密码登陆。
3 配置Hadoop
3.1拷贝hadoop
将hadoop-1.0.4.tar.gz ,拷贝到usr/local 文件夹下,然后解压。
解压命令:
tar –zxvf hadoop-1.0.4.tar.gz
3.2查看 cat /etc/hosts
IP1 hadoop1
IP2 hadoop2
3.3 配置 conf/masters 和 conf/slaves
conf/masters:
1
IP1
conf/slaves:
1
2
IP2
IP2
3.4 配置 conf/hadoop-env.sh
加入
1
export java_HOME=/home/elvis/soft/jdk1.7.0_17
3.5 配置 conf/core-site.xml
1
2
3
4
<property>
<name>fs.default.name</name>
<value>hdfs://IP1:9000</value>
</property>
3.6 配置 conf/hdfs-site.xml
加入
<property>
<name>dfs.http.address</name>
<value>IP1:50070</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
3.7 配置conf/mapred-site.xml
加入
<property>
<name>mapred.job.tracker</name>
<value>192.168.1.50:8012</value>
</property>
3.8 建立相关的目录
1
/usr/local/hadoop/ //hadoop数据和namenode目录
【注意】只创建到hadoop目录即可,不要手动创建data和namenode目录。
其他节点机也同样建立该目录。
3.9 拷贝hadoop文件到其他节点机
将hadoop文件远程到其他节点(这样前面的配置就都映射到了其他节点上),
命令:
1
scp -r hadoop-1.0.4 IP2:/usr/local/
3.10 格式化Active master
命令:
bin/hadoop namenode -format
3.11 启动集群 ./start-all.sh
现在集群启动起来了,看一下,命令:
1
bin/hadoop dfsadmin -report
2个datanode,打开web看一下
浏览器输入:IP1:50070
打完收工,集群安装完成!
2. 怎样在linux系统上搭建Hadoop集群
(1)下载jdk,在官网下载,下载rpm的包
(2)hadoop包的下载,官网上下载
download hadoop->release->mirror site(镜像站)->随便选择离自己近的(HTTP下的第一个)->选择2.7.2->下载.tar.gz
(3)将两个包远程传输到linux虚拟机中
(4)将主机名和ip地址进行适配,让我们的ip地址和主机名(如bigdata)相匹配:写到/etc/hosts里面
vi /etc/hosts
按“i”进入插入状态 将原有的地址注释掉
在新的一行输入:ip地址 主机名(如172.17.171.42 bigdata)(注:可以双击xshell的窗口再打开一个连接窗口,可以在新的窗口查询ip地址并进行复制)
按“Esc”退出插入状态
输入:wq保存退出
修改完之后可以输入hostname回车,查看是否成功
reboot:重启,使得刚刚的修改生效
(5)将包放到opt下:cp hadoop-2.7.2.tar.gz /opt/
cp jdk-8u111-linux-x64.rpm /opt/
进入opt:cd /opt/
查看opt下的文件:ll
(6)安装jdk,配置jdk的环境变量
安装命令:rpm -ivh jdk-Bu101-linux-x64.rpm
配置环境变量:进入profile进行编辑:vi /etc/profile
并按照上面的方式在最后写入并保存:JAVA_HOME=/usr/java/default/(/usr/java/default/是jdk的安装目录)
打印JAVA_HOME检验是否配置好:echo $JAVA_HOME结果发现打印出来的没有内容因为我们对/etc/profile的修改需要通过以下命令对它生效source /etc/profile。再次输入echo $JAVA_HOME,打印结果为/usr/java/default/
(7)验证jdk安装好:java -version
(8)配置SSH(免密码登录)
回到根目录:cd 安装SSH秘钥:ssh-keygen -t rsa会自动在/root/.shh/目录下生成
查看目录:ll .ssh/有两个新生成的文件id_rsa(私钥),id_rsa.pub(公钥)
进入.ssh/:cd .ssh/
将公钥写入authorized_key中:cat id_rsa.pub >> authorized_keys
修改authorized_keys文件的权限:chmod 644 authorized_keys
修改完后退出.ssh的目录cd进入初始目录输入:ssh bigdata(bigdata为你要远程登录的主机名或者ip地址)第一次登录需要确认是否需要继续登录输入yes继续登录
退出exit
(9)安装及配置hadoop
解压:tar zxf hadoop-2.7.2.tar.gz
查看/opt目录下是否已经存在解压的文件:ll(结果为出现hadoop-2.7.2)
继续查看hadoop-2.7.2里的内容:cd hadoop-2.7.2
配置HADOOP_HOME:修改/etc/profile
进入hadoop的配置文件目录cd /opt/hadoop-2.7.2/etc/hadoop/,会用的的配置文件如下:
core-site.xml
配置hadoop的文件系统即HDFS的端口是什么。
配置项1为default.name,值为hdfs://bigdata:9000(主机名:bigdata也可也写成ip地址,端口9000习惯用)
配置项2为hadoop临时文件,其实就是配置一个目录,配置完后要去创建这个目录,否则会存在问题。
配置项3分布式文件系统的垃圾箱,值为4320表示3分钟回去清理一次
<property>
<name>fs.default.name</name>
<value>hdfs://bigdata:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-2.7.2/current/tmp</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>4320</value>
</property>
hdfs-site.xml
配置项1,namenode的细节实际上就是一个目录
配置项2,datanode的细节,真实环境中datanode的内容不需要再namenode的系统下配置,在此配置的原因是我们的系统是伪分布式系统,namenode和datanode在一台机器上
配置项3,副本的数量,在hdfs中每个块有几个副本
配置项4,HDFS是否启用web
配置项5,HDFS的用户组
配置项6,HDFS的权限,现在配置为不开启权限
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop-2.7.2/current/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop-2.7.2/current/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions.superusergroup</name>
<value>staff</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
创建配置文件中不存在的目录:mkdir -p /opt/hadoop-2.7.2/current/data
mkdir -p /opt/hadoop-2.7.2/current/dfs/name
mkdir -p /opt/hadoop-2.7.2/current/tmp
yarn-site.xml
配置项1,resourcemanager的hostname,值为你运行的那台机器的主机名或IP地址
配置项2,nodemanager相关的东西
配置项3,nodemanager相关的东西
配置项4,resourcemanager的端口,主机名+端口号(IP+端口)
配置项5,resourcemanager调度器的端口
配置项6,resourcemanager.resource-tracker,端口
配置项7,端口
配置项8,端口
配置项9,日志是否启动
配置项10,日志保留的时间长短(以秒为单位)
配置项11,日志检查的时间
配置项12,目录
配置项13,目录的前缀
<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigdata</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>maprece_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.maprece.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>bigdata:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheler.address</name>
<value>bigdata:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>bigdata:18025</value>
</property> <property>
<name>yarn.resourcemanager.admin.address</name>
<value>bigdata:18141</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>bigdata:18088</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>86400</value>
</property>
<property>
<name>yarn.log-aggregation.retain-check-interval-seconds</name>
<value>86400</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/tmp/logs</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir-suffix</name>
<value>logs</value>
</property>
mapred-site.xml
没有mapred-site.xml,输入vi mapred-按“TAB”发现有mapred-site.xml.template,对该文件进行复制
cp mapred-site.xml.template mapred-site.xml 配置项1,maprece的框架
配置项2,maprece的通信端口
配置项3,maprece的作业历史记录端口
配置项4,maprece的作业历史记录端口
配置项5,maprece的作业历史记录已完成的日志目录,在hdfs上
配置项6,maprece中间完成情况日志目录
配置项7,maprece的ubertask是否开启
<property>
<name>maprece.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>maprece.jobtracker.http.address</name>
<value>bigdata:50030</value>
</property>
<property>
<name>maprece.jobhisotry.address</name>
<value>bigdata:10020</value>
</property>
<property>
<name>maprece.jobhistory.webapp.address</name>
<value>bigdata:19888</value>
</property>
<property>
<name>maprece.jobhistory.done-dir</name>
<value>/jobhistory/done</value>
</property>
<property>
<name>maprece.intermediate-done-dir</name>
<value>/jobhisotry/done_intermediate</value>
</property>
<property>
<name>maprece.job.ubertask.enable</name>
<value>true</value>
</property>
slaves
bigdata
hadoop-env.sh
JAVA_HOME=/usr/java/default/
格式化分布式文件系统(hdfs):hdfs namenode -format
成功的标志: INFO common.Storage: Storage directory /opt/hadoop-2.7.2/current/dfs/namehas been successfully formatted.
启动Hadoop集群:/opt/hadoop-2.7.2/sbin/start-all.sh
验证Hadoop集群是否正常启动:
jps,系统中运行的java进程;
通过端口查看(关闭防火墙或者service iptables stop在防火墙的规则中开放这些端口):
http://bigdata:50070(http://http://192.168.42.209/:50070),分布式文件系统hdfs的情况
yarn http://bigdata:18088(http://http://192.168.42.209/:50070)
3. 在Linux下搭建Hadoop有哪些注意事项
hadoop是运行在linux下的并行计算框架,在windows上搭建也是通过cygwin模拟linux的环境来运行,所以个人觉得直接在windows下搭建hadoop几乎没有任何好处,还不如在windows上安装linux的虚拟机,通过虚拟机中的linux系统来运行hadoop
4. 如何在Linux上安装与配置Hadoop
一、安装hadoop 1 因为hadoop是基于java的,所以要保证hadoop能找到在本地系统中大路径,即正确设置java的环境变量
5. 如何在Linux上安装与配置Hadoop
在Linux上安装Hadoop之前,需要先安装两个程序:
1. JDK 1.6或更高版本;
2. SSH(安全外壳协议),推荐安装OpenSSH。
下面简述一下安装这两个程序的原因:
1. Hadoop是用Java开发的,Hadoop的编译及MapRece的运行都需要使用JDK。
2. Hadoop需要通过SSH来启动salve列表中各台主机的守护进程,因此SSH也是必须安装的,即使是安装伪分布式版本(因为Hadoop并没有区分集群式和伪分布式)。对于伪分布式,Hadoop会采用与集群相同的处理方式,即依次序启动文件conf/slaves中记载的主机上的进程,只不过伪分布式中salve为localhost(即为自身),所以对于伪分布式Hadoop,SSH一样是必须的。
(2)配置环境变量
输入命令:
sudo gedit /etc/profile
输入密码,打开profile文件。
在文件的最下面输入如下内容:
#set Java Environment
export JAVA_HOME= (你的JDK安装位置,一般为/usr/lib/jvm/java-6-sun)
export CLASSPATH=".:$JAVA_HOME/lib:$CLASSPATH"
export PATH="$JAVA_HOME/:$PATH"
这一步的意义是配置环境变量,使你的系统可以找到JDK。
(3)验证JDK是否安装成功
输入命令:
java -version
查看信息:
java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) Server VM (build 14.0-b16, mixed mode)
6. 熟悉常用的 Linux 操作和 Hadoop 操作
1.切换到当前目录的上一级目录
cd ..
2.切换到当前登录 Linux 系统的用户自己的主文件夹
cd ~
3.进入/tmp 目录,创建目录 a1/a2/a3/a4。
mkdir a1/a2/a3/a4 -p
4.删除目录
rmdir a
rmdir a1/a2/a3/a4 -p
5.cp 命令:复制文件或目录
(1) 将当前用户的主文件夹下的文件.bashrc 复制到目录“/usr”下,并重命名为 bashrc1
sudo cp .bashrc /usr/bashrc1
(2) 在目录“/tmp”下新建目录 test,再把这个目录复制到“/usr”目录下
cd /tmp
mkdir test
sudo cp /tmp/test /usr -r
6.mv 命令:移动文件与目录,或更名
(1) 将“/usr”目录下的文件 bashrc1 移动到“/usr/test”目录下
sudo mv /usr/bashrc1 /usr/test
(2) 将“/usr”目录下的 test 目录重命名为 test2
sudo mv /usr/test /usr/test2
7.rm 命令:移除文件或目录
(1) 将“/usr/test2”目录下的 bashrc1 文件删除
sudo rm /usr/test2/bashrc1
(2) 将“/usr”目录下的 test2 目录删除
sudo rm -rf /usr/test2
8.cat 命令:查看文件内容查看当前用户主文件夹下的.bashrc 文件内容
cat .bashrc
9.tac 命令:反向查看文件内容反向查看当前用户主文件夹下的.bashrc 文件的内容
tac .bashrc
10.more 命令:一页一页翻动查看翻页查看当前用户主文件夹下的.bashrc 文件的内容
more .bashrc
11.head 命令:取出前面几行
(1) 查看当前用户主文件夹下.bashrc 文件内容前 20 行
head -n20 .bashrc
(2)查看当前用户主文件夹下.bashrc 文件内容,后面 50 行不显示,只显示前面几行
head -n -50 .bashrc
12.tail 命令:取出后面几行
(1)查看当前用户主文件夹下.bashrc 文件内容最后 20 行
tail -n20 .bashrc
(2)查看当前用户主文件夹下.bashrc 文件内容,并且只列出 50 行以后的数据
tail -n -50 .bashrc
13.touch 命令:修改文件时间或创建新文件
(1) 在“/tmp”目录下创建一个空文件 hello,并查看文件时间
touch hello
stat hello
(2)修改 hello 文件,将文件时间整为 5 天前
touch -d "2019-3-26" hello
stat hello
14.chown 命令:修改文件所有者权限将 hello 文件所有者改为 root 帐号,并查看属性
sudo chown root hello
ls -l hello
15.find 命令:文件查找找出主文件夹下文件名为.bashrc 的文件
find .bashrc
16.tar 命令:压缩命令
(1) 在根目录“/”下新建文件夹 test,然后在根目录“/”下打包成 test.tar.gz
tar -zcvf test.tar.gz test/
(2) 把上面的 test.tar.gz 压缩包,解压缩到“/tmp”目录
tar -zxvf test.tar.gz
17.grep 命令:查找字符串从“~/.bashrc”文件中查找字符串'examples'
grep -rn "examples" .bashrc
18.使用 hadoop 用户登录 Linux 系统,启动 Hadoop(Hadoop 的安装目录为“/usr/local/hadoop”),为 hadoop 用户在 HDFS 中创建用户目录“/user/hadoop”
./bin/hadoop fs -mkdir -p /usr/hadoop
19.接着在 HDFS 的目录“/user/hadoop”下,创建 test 文件夹,并查看文件列表
./bin/hdfs dfs -mkdir test
./bin/hadoop fs -ls
20.将 Linux 系统本地的“~/.bashrc”文件上传到 HDFS 的 test 文件夹中,并查看 test
./bin/hadoop fs -put ~/.bashrc test
./bin/hadoop fs -ls test
21.将 HDFS 文件夹 test 复制到 Linux 系统本地文件系统的“/usr/local/hadoop”目录下
参考: 1
7. Linux服务器上搭建hadoop
用不同的账号,当然可以。
我用相同的账号,搭建了两套环境,只要安装hadoop的目录不再同一个目录下就可以。然后就是注意你的/etc/profile尽量不要配置HADOOP_HOME的值,只配置JDK就可以了,不然可能会用冲突,不知道该去找哪个hadoop home 了。
8. linux怎么部署hadoop
在Linux上安装Hadoop之前,需要先安装两个程序:
1. JDK 1.6或更高版本;
2. SSH(安全外壳协议),推荐安装OpenSSH。
下面简述一下安装这两个程序的原因:
1. Hadoop是用Java开发的,Hadoop的编译及MapRece的运行都需要使用JDK。
2. Hadoop需要通过SSH来启动salve列表中各台主机的守护进程,因此SSH也是必须安装的,即使是安装伪分布式版本(因为Hadoop并没有区分集群式和伪分布式)。对于伪分布式,Hadoop会采用与集群相同的处理方式,即依次序启动文件conf/slaves中记载的主机上的进程,只不过伪分布式中salve为localhost(即为自身),所以对于伪分布式Hadoop,SSH一样是必须的。
一、安装JDK 1.6
安装JDK的过程很简单,下面以Ubuntu为例。
(1)下载和安装JDK
确保可以连接到互联网,输入命令:
sudo apt-get install sun-java6-jdk
输入密码,确认,然后就可以安装JDK了。
这里先解释一下sudo与apt这两个命令,sudo这个命令允许普通用户执行某些或全部需要root权限命令,它提供了详尽的日志,可以记录下每个用户使用这个命令做了些什么操作;同时sudo也提供了灵活的管理方式,可以限制用户使用命令。sudo的配置文件为/etc/sudoers。
apt的全称为the Advanced Packaging Tool,是Debian计划的一部分,是Ubuntu的软件包管理软件,通过apt安装软件无须考虑软件的依赖关系,可以直接安装所需要的软件,apt会自动下载有依赖关系的包,并按顺序安装,在Ubuntu中安装有apt的一个图形化界面程序synaptic(中文译名为“新立得”),大家如果有兴趣也可以使用这个程序来安装所需要的软件。(如果大家想了解更多,可以查看一下关于Debian计划的资料。)
(2)配置环境变量
输入命令:
sudo gedit /etc/profile
输入密码,打开profile文件。
在文件的最下面输入如下内容:
#set Java Environment
export JAVA_HOME= (你的JDK安装位置,一般为/usr/lib/jvm/java-6-sun)
export CLASSPATH=".:$JAVA_HOME/lib:$CLASSPATH"
export PATH="$JAVA_HOME/:$PATH"
这一步的意义是配置环境变量,使你的系统可以找到JDK。
(3)验证JDK是否安装成功
输入命令:
java -version
查看信息:
java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) Server VM (build 14.0-b16, mixed mode)
9. 如何在Linux上安装与配置Hadoop
一、安装hadoop
1 因为hadoop是基于java的,所以要保证hadoop能找到在本地系统中大路径,即正确设置java的环境变量。
详细请看:linux 安装配置jdk
2 到官网:http://www.apache.org/dyn/closer.cgi/hadoop/common/ 下载hadoop,
这里我选择hadoop1.0.4
3 解压到 /usr/local
tar -xvf hadoop-1.0.4.tar.gz
4 设置hadoop环境变量,为了使环境变量永久有效并对所有用户有效,我们将下面两句添加到/etc/profile
export HADOOP_HOME=/usr/local/hadoop-1.0.4
export PATH=$PATH:$HADOOP_HOME/bin
5 验证hadoop是否可以运行
hadoop version
ok, 安装成功!(?不算安装吧,哈哈)