聊聊Linux 安裝Hadoop和Hbase
環(huán)境介紹
三臺CentOS7主機
- 192.168.122.101 hdfs1
- 192.168.122.102 hdfs2
- 192.168.122.103 hdfs3
其中hdfs1為主節(jié)點,其他為從節(jié)點。
安裝配置三臺都是一樣的,做ssh免密碼驗證,如果只要在主節(jié)點hdfs1操作,只做hdfs1到其他節(jié)點信任即可。
如果三臺都互相信任,這樣子在哪臺都可以操作是一樣的。
修改內核參數(shù)
- vim /etc/sysctl.conf
- net.ipv4.tcp_syn_retries = 1
- net.ipv4.tcp_synack_retries = 1
- net.ipv4.tcp_keepalive_time = 600
- net.ipv4.tcp_keepalive_probes = 3
- net.ipv4.tcp_keepalive_intvl =15
- net.ipv4.tcp_retries2 = 5
- net.ipv4.tcp_fin_timeout = 2
- net.ipv4.tcp_max_tw_buckets = 65536
- net.ipv4.tcp_tw_recycle = 1
- net.ipv4.tcp_tw_reuse = 1
- net.ipv4.tcp_max_orphans = 32768
- net.ipv4.tcp_syncookies = 1
- net.ipv4.tcp_max_syn_backlog = 16384
- net.ipv4.tcp_wmem = 8192 131072 16777216
- net.ipv4.tcp_rmem = 32768 131072 16777216
- net.ipv4.tcp_mem = 786432 1048576 1572864
- net.ipv4.ip_local_port_range = 1024 65000
- net.ipv4.ip_conntrack_max = 65536
- net.ipv4.netfilter.ip_conntrack_max=65536
- net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180
- net.core.somaxconn = 16384
- net.core.netdev_max_backlog = 16384
- vm.max_map_count = 262144
修改句柄限制
- vim /etc/security/limits.conf
- * soft noproc 655360
- * hard noproc 655360
- * soft nofile 655360
- * hard nofile 655360
設置主機名解析
在不同的節(jié)點,設置對應的主機名
- hostnamectl set-hostname hdfs1
添加hosts記錄,也可以使用dns進行解析,比較靈活。
- vim /etc/hosts
- 192.168.122.101 hdfs1
- 192.168.122.102 hdfs2
- 192.168.122.103 hdfs3
創(chuàng)建用戶和目錄
- useradd hadoop
- passwd hadoop
- mkdir -p /apps/
- mkdir -pv /data/hdfs/hadoop
- mkdir -pv /data/hdfs/hbase
- chown hadoop.hadoop /data/hadoop /data/hbase
設置ssh免密碼
- su - hadoop
- ssh-keygen
- ssh-copy-id hadoop@hdfs1
- ssh-copy-id hadoop@hdfs1
- ssh-copy-id hadoop@hdfs1
ssh-keygen產(chǎn)生密鑰的時候一直回車就可以完成創(chuàng)建
ssh-copy-id的時候需要輸入hadoop的密碼
下載jdk
下載地址:
www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
需要登陸之后才能下載
- tar zxvf jdk-8u271-linux-x64.tar.gz
- mv jdk-8u271-linux-x64 /apps/
- cd /apps/
- ln -s jdk1.8.0_271 jdk
- cd -
- if grep '# modify by script' /etc/profile >>/dev/null 2>&1; then
- echo "alread set JAVA_HOME"
- else
- cp /etc/profile /etc/profile_bak$(date +%Y%m%d%H%M%S)
- cat >>/etc/profile <<EOF
- # modify by script
- export JAVA_HOME=/apps/jdk
- export PATH=\${JAVA_HOME}/bin:/apps/hadoop/bin:/apps/hbase/bin:\$PATH
- EOF
- fi
下載hadoop和hbase
- mirrors.aliyun.com/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz
- archive.apache.org/dist/hbase/1.3.5/hbase-1.3.5-bin.tar.gz
- tar zxvf hadoop-2.7.7.tar.gz
- tar zxvf hbase-1.3.5-bin.tar.gz
- mv hadoop-2.7.7 hbase-1.3.5 /apps/
- cd /apps
- ln -s hadoop-2.7.7 hadoop
- ln -s hbase-1.3.5 hbase
- cd -
配置hadoop
1.配置namenod
- vim /apps/hadoop/etc/hadoop/core-site.xml
添加內容
- <configuration>
- <property>
- <!-- 指定namenode通信地址 -->
- <name>fs.defaultFS</name>
- <value>hdfs://hdfs1:9000</value>
- </property>
- <!-- 指定hadoop運行時產(chǎn)生文件的存儲路徑 -->
- <property>
- <name>hadoop.tmp.dir</name>
- <value>/data/hdfs/hadoop/tmp</value>
- </property>
- </configuration>
2.配置namenode和datanode
- vim /apps/hadoop/etc/hadoop/hdfs-site.xml
在文件后面添加內容
- <configuration>
- <!-- 設置namenode的http通訊地址 -->
- <property>
- <name>dfs.namenode.http-address</name>
- <value>hdfs1:50070</value>
- </property>
-
- <!-- 設置secondarynamenode的http通訊地址 -->
- <property>
- <name>dfs.namenode.secondary.http-address</name>
- <value>hdfs2:50070</value>
- </property>
-
- <!-- 設置namenode存放的路徑 -->
- <property>
- <name>dfs.namenode.name.dir</name>
- <value>/data/hdfs/hadoop/name</value>
- </property>
-
- <!-- 設置hdfs副本數(shù)量 -->
- <property>
- <name>dfs.replication</name>
- <value>2</value>
- </property>
- <!-- 設置datanode存放的路徑 -->
- <property>
- <name>dfs.datanode.data.dir</name>
- <value>/data/hdfs/hadoop/datanode</value>
- </property>
-
- <property>
- <name>dfs.permissions</name>
- <value>false</value>
- </property>
- </configuration>
3.配置環(huán)境變量
- vim /apps/hadoop/etc/hadoop/hadoo-env.sh
修改JAVA_HOME
- export JAVA_HOME=/apps/jdk
也可以根據(jù)具體的需求設置堆棧之類的參數(shù)
4.設置主節(jié)點
- vim /apps/hadoop/etc/hadoop/master
添加主節(jié)點,一般使用主機名
- hdfs1
5.設置從節(jié)點
- vim /apps/hadoop/etc/hadoop/slave
添加從節(jié)點,一般使用主機名
- hdfs1
- hdfs2
- hdfs3
配置hbase
1.配置環(huán)境變量
- vim /apps/hbase/conf/hbase-env.sh
修改JAVA_HOME變量即可
- export JAVA_HOME=/apps/jdk
也可以根據(jù)具體的需求設置堆棧之類的參數(shù)
2.設置hadoop和zookeeper等信息
- vim /apps/hbase/conf/hbase-site.xml
添加內容
- <configuration>
- <property>
- <name>hbase.rootdir</name>
- <!-- hbase存放數(shù)據(jù)目錄 -->
- <value>hdfs://hdfs1:9000/hbase/hbase_db</value>
- <!-- 端口要和Hadoop的fs.defaultFS端口一致-->
- </property>
- <property>
- <name>hbase.cluster.distributed</name>
- <!-- 是否分布式部署 -->
- <value>true</value>
- </property>
- <property>
- <name>hbase.zookeeper.quorum</name>
- <!-- zookooper 服務啟動的節(jié)點,只能為奇數(shù)個 -->
- <value>hdfs1,hdfs2,hdfs3</value>
- </property>
- <property>
- <!--zookooper配置、日志等的存儲位置,必須為以存在 -->
- <name>hbase.zookeeper.property.dataDir</name>
- <value>/data/hdfs/hbase/zookeeper</value>
- </property>
- <property>
- <!--hbase web 端口 -->
- <name>hbase.master.info.port</name>
- <value>16610</value>
- </property>
- </configuration>
- vim /apps/hbase/conf/regionservers
- hdfs1
- hdfs2
- hdfs3
啟動測試
- su - hadoop
- /apps/hadoop/sbin/start-all.sh
- /apps/hbase/bin/start-hbase.sh
總結
這些步驟只是簡單的部署,具體應用需要經(jīng)過測試并做出對應的調整。